LINGUAGEM C : VOCÊ SABE USAR CAMPOS DE BITS??
Вставка
- Опубліковано 4 лют 2025
- Apoio: www.ryndackcom...
Linguagem C#, Curso Completo (50% OFF):
go.hotmart.com...
Linguagem C, Curso Definitivo:
go.hotmart.com...
Linguagem C++, Curso Completo:
go.hotmart.com...
Conheça todos os cursos WR Kits
wrkits.com.br/...
Loja WR Kits
wrkits.com.br/
=======================================
Se inscreva em nosso canal do Telegram:
t.me/joinchat/...
Instagram WR Kits: / wrkits
Twitter/Instagram: @WagnerRambo e @WRKits
Contribua com a WR Kits em uma das plataformas:
/ wrkits
apoia.se/wrkits
www.padrim.com...
=======================================
Descrição do vídeo:
Nesta aula, entenda e saiba como utilizar os campos de bits (bit fields) na Linguagem C!
WR Kits parceria com Ryndack componentes.
=======================================
=======================================
Gostei. Bem interessante. Usa somente o necessário
Excelente aula!
Oba nobre Dr. WR's!!! Conteúdos de Linguagem C sempre são bem-vindos meu caro. Estou aprendendo uma infinidade de coisas em eu Curso Definitivo e por aqui também. Mande mais! Bravooo!
Muito obrigado Conrado!
20 anos de linguagem C e realmente nunca vi atribuição desta maneira (com ":") deste conceito! Massa!
Show Henrique! Considere fazer o nosso curso Definitivo de Linguagem C, lá eu apresento todos os segredos, truques e mais um pouco! Bora: go.hotmart.com/N48026554Y
Sei, porque fiz o curto WR Kits de Linguagem C. E, sinceramente, este tema foi o que eu mais gostei e mais achei útil de todo o curso: a manipulação dos bits (campo de bits, operações bitwise, etc.). Fiquei muito satisfeito em aprender isso! Só por essas aulas o curso já vale muito a pena (mas tem muito mais coisa bem interessante lá).
Bacana demais Rodrigo! De fato no curso exploramos bastante a manipulação de bits.
Perfeito meu amigo! 👏🏻👏🏻👏🏻
excelente
Show de bola! Gostei muito da aula! Assim que as coisas melhorarem, pretendo adquirir o curso de C e C++, já os venho namorando a algum tempo. Mas acho que vou priorizar o de C# primeiro, vou tentar pegar antes da promoção encerrar! Gostaria de sugerir algum vídeo com aqueles kits de desenvolvimento da ST que possuem Bluetooth / WiFi, seriam bem interessante de demonstrar! Não vi muito conteúdo didático em vídeos sobre isso nem na gringa, seria top! Valeu professor!
Aproveite, o curso de C# está incrível! Recomendo os demais também. Excelente, sugestões anotadas, obrigado!
Excelente dica meu amigo! A Linguagem C é realmente poderosa quando bem utilizada! Sempre acompanhando! Forte abraço!
Verdade! E se for "mal utilizada" (no sentido de ser usada para construir malware), é extremamente poderosa! ;-)
Muito obrigado meu amigo! A Linguagem C tem realmente uma infinidade de recursos e vamos demonstrando sempre que possível. Forte abraço!!
Ótimo explicação! Fomenta boas ideias para quem está trabalhando com embarcados. Só passando um detalhe que aprendi sobre struct; seu tamanho está relacionado a quantidade de elementos que possui e de seus tipos, mesmo que a struct não tenha sido inicializada. Aprendi isso em 'milnovecentosedoze' e espero que ainda seja assim! :) Parabéns Wagner, []s
Excelente Gercino! Sim segue válido.
Uso muito quando estou particionando os registros da SRAM...
Um vídeo curto legal pra galera poderia mostrar como usar union para preencher automaticamente uma estrutura kkkk essa manipulação de bit e union são simplesmente maravilhosos.
Show de bola, sugestão anotada!
SUPER LIKE
Show!
Valeu Orlando!
VLW MR WB
OTIMA DICA
VOU VER SE TEM ESSA AULA NO CURSO DE C OU C++
Valeu meu amigo! Lá no curso de Linguagem C tem.
Show. Que tal uma sugestão de vídeo sobre funções e macros variádicas. São outros recursos muito pouco utilizados e conhecidos da linguagem C.
Sensacional, sugestão anotada!
Muito bom, Wagner. Faltou, quiçá, mostrar a memória poupada com esta estratégia mas isso é algo que pode ser facilmente verificado pelos seguidores do canal que já conhecem a linguagem C.
Ao outros, recomendo que façam o curso de linguagem C da WR Kits.
Isso mesmo Fernando, muito obrigado!!
Obrigado pelo vídeo. Acho que faltou falar um pouco sobre alinhamento e empacotamento, já que estão bastante vinculados a esse tópico.
Aqui vai uma rapida explicação para as pessoas:
Como ele disse, depende muito da arquitetura. Em arquiteturas de 32 bits (x86 ou ARM), o tamanho dessa estrutura será de 4 bytes devido ao alinhamento realizado pelo compilador. Você pode utilizar diretivas para o compilador evitar esse alinhamento (como __attribute__((packed))), forçando assim que o tamanho da estrutura não utilize o alinhamento e ficando com apenas 1 byte. Mas vale ressaltar que isso pode impactar o desempenho, pois o acesso à memória não estará alinhado. Não sei exatamente quanto desempenho é perdido ao usar estruturas desalinhadas, pois nunca fui atrás disso, mas saiba que toda estrutura que você declara possui, por padrão, um alinhamento de bits.
Você pode observar/brincar com isso declarando estruturas com tipos diferentes (uint8_t, uint16_t, vetores, etc.) e printando o tamanho da estrutura, por exemplo, usando sizeof(). Você vai perceber que, dependendo do arranjo da sua estrutura, ela terá mais bytes que os declarados. Isso ocorre devido ao alinhamento de bits que o compilador realiza (como dito antes).
Obrigado pelo vídeo.
Abraço
show. Abraço
bytes desalinhados = processamento mais rápido das informações, uma vez que as variáveis declaradas nesse formato terão o mesmo tamanho do barramento de dados do processador, e não haverá a necessidade do compilador criar alguma estratégia para ignorar os bits restantes. o maior problema de bytes desalinhados é o consumo extra de memória, já que o compilador irá dar preferência ao desempenho ao invés da memória.
bytes alinhados = economia de memória, pois você aproveitará todo o espaço de memória para acomodar os dados declarados, porém o processador terá o seu desempenho diminuído, pois o compilador irá produzir mais instruções para alterar os dados de uma região específica da memória sem comprometer a região dos demais bits dos dados declarados.
resumindo, bytes desalinhados = performance e maior consumo de memória, bytes alinhados = menor performance e maior economia de memória
WR faz vídeo recebendo dados de um barramento 485 e de um barramento CAN num programa em C#. Pegando os IDs de quem enviou e os dados. Estou fazendo o curso de C# excelente vários projetos na cabeça.
Show meu amigo, sugestão anotada!
Ótima aula como sempre! E Wagner, tem previsão de quando a PARADOXUS 8051 vai estar disponível lá na loja?
Muito obrigado! Não tem previsão, mas teremos kit de 8051 sim, fique sempre ligado.
Professor, boa noite. Poderia fazer um vídeo sobre adicionar algum exemplo do github em um projeto esp-idf existente? Algo como adicionar uma captura do Ads1115 em algum projwto que tenha outras funcionalidades, ou qualquer outra funcionalidade adicional nesse projeto. Abraço
Show Carlos, sugestão anotada. Abraço
Boa noite, muito bom o vídeo, é possível usar com variáveis de números reais para limitar o uso de memória ?
Gostei muito de fazer o curso de linguagem C, estou revendo o curso para poder começar o de C++ e o de C sharp.
Obrigado William! Campos de bits usamos apenas com unsigned int.
Bons estudos!
@@canalwrkits obrigado, e existe um limite de declaração de bits? Ou o limite vai do tamanho da memória?
O limite é a memória da arquitetura mesmo.
bom video! bom dia Wagner, no caso do ano esta ocupando 12 bits, no espaço de memoria é reservado 8 bits em um endereço e + 4 bits em outro? os 4 bits restantes já esta comprometido com a variavel hora ou poderão ser usados para reservar outros bits?
Análise correta. E sim, o compilador organiza para aproveitarmos ao máximo os bits disponíveis, então os 4 restantes poderão servir para outro dado.
mesmo nos compiladores dedicados aos microcontroladores? obrigado
Particularmente para sistemas embarcados essa abordagem não é recomendado. Usem máscara de bits sera mais portável, menos verboso e mais performático.
Isso mesmo.
Qual abstração é mais elegante ? PORTCbits.PC1 = X ou PORTCbits(1, X)
@@Prescott2400-my6di decorar cada registrador e fazer bitwise manualmente de cada um n tenho tempo nem paciencia pra isso. Eu escrevi a função PORTCbits(PINO, FUNÇÃO 0 1 OU 2) 0 desliga 1 liga 2 toggle justamente pra nao ter que escrever manual. Mas acho a do mplab que usa esse método de struct mais elegante com menos cara de arduino
@@Prescott2400-my6di void PORTCbits(unsigned char pin, unsigned short int pfun){
switch(pfun){
case 1: {GPIOC->OUTDR |= (1
eu ainda tennho duvida sobre os bit do registradores, por ex uma saida RA0 vc tem 8 bits para confirgurar , mais se configurar como entrada RA0 posso ter até 7 entradas diferentes de leitura ?
RA0 seria um único bit de um PORTA por exemplo. Se configurar como saída, será uma saída. Se configurar como entrada, será uma entrada. Não entendi exatamente sua dúvida.