Olha. Eu gostaria de ter aprendido as diversas maneiras de se exibir tanto o endereço de memória como o conteúdo de memória apontado por um ponteiro.
Resumindo, seria mais ou menos o código abaixo. Se faltar alguma coisa, irei adicionando.
#include <stdlib.h>
int main()
{
char ponteiro[5]="ABCDE";
printf("Comandos equivalentes em C\n\n");
printf("Considerando 'char ponteiro[5]=\"ABCDE\";'\n\n");
printf("Primeiro endereco do ponteiro:%p \n\n",ponteiro);
printf("Primeiro conteudo de ponteiro[0]: %c\n",ponteiro[0]);
printf("Primeiro conteudo de *ponteiro: %c\n\n",*ponteiro);
printf("Conteudo de ponteiro[1] : %c\n",ponteiro[1]);
printf("Conteudo de *(ponteiro+1): %c\n\n",*(ponteiro+1));
printf("Endereco de memoria de (&ponteiro[1]):%p\n",(&ponteiro[1]));
printf("Endereco de memoria de (&ponteiro+1) :%p\n\n",(ponteiro+1));
return 0;
}
Vou mandar uma dica aqui para quem resolveu instalar o Linux e volta e meia apanha quando instalando alguma coisa e ou compilando um pacote. Coisa simples, que eu gostaria muito que tivesse me ensinado quando comecei a mexer com Linux.
Abra o terminal e dê o seguinte comando:
sudo apt install build-essential
O comando acima instala um conjunto de pacotes chamado “build-essentials”, que são um conjunto de pacotes necessários para compilar softwares no Linux.
Esse comando instala automaticamente o depurador GNU, os compiladores g++/GNU e mais algumas ferramentas e bibliotecas necessárias para compilar um programa.
Ao instalar os pacotes build-essential, alguns outros pacotes como G++, dpkg-dev, GCC e make, etc. também são instalados em seu sistema.
Não resolve tudo, mas na prática ter esse conjunto de ferramentas ajuda e muito na instalação de pacotes e eu considero uma boa pedida o ter instalado no sistema.
No começo de minha carreira eu tive o prazer de trabalhar com um técnico de computadores, senior, na antiga Burroughs Eletrônica. Isso foi nos idos de 1985 e muitos de vocês sequer pensavam em nascer kkkk.
Então, ele tinha um bordão que utilizava quando a gente se enrolava em consertar os mainframes que era o seguinte:
“Quando tudo o mais falhar, siga o manual”
Nelson Zart
Pois é. hoje me lembrei dele em dois momentos.
Um deles eu estava configurando o Apache Directory Studio para acessar o LDAP do Google Workspace Enterprise e tive de configurar o Stunnel seguindo o manual e em outro caso, meu colega estava se batendo para fazer o agente GLPI subir o status no servidor do GLPI.
Em ambos os casos, só conseguimos resolver esses problemas após lermos a documentação e proceder com a configuração, conforme indicado nos respectivos manuais.
Nada de fórum, Stack Overflow e adivinhação. Definitivamente foi a leitura do manual que resolveu o perrengue.
Se você precisa que um dispositivo de rede sempre obtenha dinamicamente o mesmo endereço de IP cada vez que for ligado, saiba que é possível fazer essa configuração direto no equipamento que fornece o serviço de DHCP.
Utilizar esse tipo de configuração pode ser interessante para impressoras, servidores, centrais telefônicas e demais equipamentos, que se mudarem o endereço de IP, as coisas podem eventualmente vir a parar de funcionar e também serve para evitar que usuários finais fiquem configurando endereços errados nos equipamentos.
Para instalações domésticas, normalmente quem fornece o serviço de DHCP é o roteador da casa ou do pequeno escritório.
Como é que faz?
Basta configurar no roteador, que um determinado endereço de IP seja associado com o endereço de MAC Address do equipamento que desejamos fixar seu endereço de IP.
Como exemplo, mostro uma fonte de alimentação que pode ser acessada pela rede, mas o mesmo é válido para outros equipamentos, incluindo impressoras.
O endereço que eu quero fixar para ela é 192.168.2.101
Eu entro nas configurações de rede da fonte de alimentação e procuro pelo endereço de MacAddres do equipamento conforme destacado com a seta.
Note também que o equipamento está configurado com o DHCP on, para sempre pegar o endereço de IP do provedor DHCP, que no caso é o roteador de casa.
Ainda conforme a foto acima, o MacAddress da fonte de alimentação é 00:27:00:00:15:26 e o DHCP ficou ligado, assim a fonte sempre irá se configurar automaticamente.
Configurando o roteador:
No roteador, temos que garantir que o serviço DHCP nunca irá utilizar o endereço que eu quero atribuir para a fonte.
Isso é feito, informando para o servidor DHCP qual é o endereço inicial que ele deve trabalhar.
No meu caso e conforme indicado abaixo, o meu roteador vai fornecer endereços de IP para os equipamentos da casa, a partir do endereço 192.168.2.150. Tudo o que vier abaixo disso, de 192.168.2.1 até 192.168.2.149, embora funcionais, são endereços reservados.
Conforme dito acima, irei utilizar o endereço 192.168.2.101, que é um endereço que é menor que o endereço inicial, portanto trata-se de um endereço reservado.
O servidor DHCP nunca irá atribuir esse endereço para qualquer equipamento, a menos que isso seja explicitamente indicado.
Toque final:
Para explicitamente indicar ao roteador para quem ele deve atribuir o endereço de IP 192.168.2.101, conforme figura abaixo, basta ir na aba “Reserva de Endereço” e associar o MacAddress da fonte de alimentação 00:27:00:00:15:26, com o endereço de IP 192.168.2.101 que a fonte deve sempre pegar.
Dessa forma o roteador irá saber que o endereço 192.168.2.101 está reservado para o MacAddress 00:27:00:00:15:26 e toda vez a fonte de alimentação for ligada e ela solicitar um endereço de IP na rede, ela sempre irá receber o mesmo endereço de IP.
E dessa forma, eu tenho paz e tranquilidade enquanto saboreio um delicioso sorvete de ouro, na costa do mediterrâneo:
Em computação, hexadecimal é muito mais fácil de entender.
Quando um programador que manja de hardware olha para um código hexadecimal, ele sabe exatamente como o hardware está se comportando, apenas fazendo contas de cabeça.
Por isso que o hexadecimal é utilizado.
Não leia o resto.
Modo nerdice on.
Computador trabalha com lógica binária.
Pensando em um computador de 8 bits, sabemos que ele consegue manusear 8 bits por vez em sua linha de dados.
No diagrama abaixo temos um computador simplificado:
Do lado esquerdo tem o processador e do lado direito tem a memória. Deixei de fora alguns detalhes para ficar mais fácil a explicação.
O processador e a memória são interligados pelo barramento de endereçamento, de dados e as linhas de controle.
O barramento de dados está detalhando os 8 bits que o compõe.
Cada seta no barramento de dados representa um bit de dados.
O processador consegue ler e escrever na memória, 8 bits de dados por vez, pois trata-se de um computador de 8 bits.
Os bits, são essas linhas que podem assumir valores binários de zero ou um.
Eletronicamente falando:
Essas linhas dos bits de dados podem estar energizadas ou não.
As linhas que estiverem energizadas terão o valor lógico VERDADEIRO (1 – um) e as que não estiverem energizadas terão o valor lógico FALSO (0 – zero).
Onde entra o hexadecimal:
Note que o barramento de dados foi separado em dois conjuntos de 4 bits.
Um conjunto de 4 bits engloba os bits de 0 a 3
O segundo conjunto de 4 bits engloba os bits de 4 a 7
A pergunta que a gente faz agora é: Quantas combinações a gente consegue fazer de bits ligados e desligados aqui?
Já dou a resposta, que são 256 combinações indo de todos os 8 bits com valor FALSO – desligados até termos todos os 8 bits com o valor VERDADEIRO – ligados.
Acompanhe, analisando os 4 primeiros bits:
Os caras fizeram o seguinte, os quatro primeiros bits, dá para fazer 16 combinações indo do valor decimal zero até o valor decimal 15. Basta continuar com a tabela adicionando os bits que faltam e iremos chegar em 256 combinações, podendo representar os números de zero a 255..
Mais um detalhe: A posição do bit corresponde a um valor decimal. Se os bits zero e dois forem verdadeiros, significa que temos o número 5 nas notações decimal e hexadecimal, por exemplo.
Conforme dito, se pegar o segundo conjunto de 4 bits, também dá para fazer essas dezesseis combinações.
Juntando o primeiro e o segundo conjunto de 4 bits, dá para fazer 16 X 16 combinações, ou seja, dá para fazer 256 combinações, que é capaz de representar os valores decimais indo de zero a 255.
No fim de tudo é isso o que realmente importa:
Para simplificar isso aí, os bits são separados em grupos de 4 bits que são representados pelos símbolos indo de “0” até “F”.
Um código indicando quais linhas de cada conjunto de 4 bits estão ligadas ou desligadas.
Simples e brilhante.
Desenvolvendo computadores:
Agora, se coloque no lugar do desenvolvedor de computadores.
O cara tem que lidar com o circuito elétrico. Tem que olhar para um código e decodificar de cabeça quais linhas do barramento de dados estão energizadas ou não.
É muito mais fácil para um engenheiro de hardware:
Separar a linha de dados em grupos de 4 bits.
Trabalhar com a notação hexadecimal, 3A por exemplo.
Converter esse número, de cabeça para o binário “0011 1010”.
E identificar no barramento quais linhas de dados que estão energizadas ou não…
Do que fazer a conversão do número 58 (decimal) para seu correspondente binário, que é bem mais complicado.
É por isso que se utiliza o hexadecimal.
Hexadecimal é para humanos falarem com máquinas, enquanto que decimal é para máquinas falarem com humanos.
Recomendo que seja lido o livro do Tocci, que já indiquei em outras respostas por aqui.
Olha, a teoria de como um led acende está escrita por ai, aos montes.
O que eu faço aqui é complementar toda a teoria, mostrando uma sequência de fotos de led, nas cores azul, verde e vermelho, com diferentes voltagens, mostrando o aumento do brilho à medida que aumenta a corrente circulando no mesmo.
O resistor do led vermelho é de 180 ohms e o dos outros leds é 120 ohms e cada “led – resistor” foram alimentados com uma tensão que foi ajustada entre 2 e 3 volts.
As fotos foram tiradas com uma Nikon D3200, lente macro 85mm, focando a objetiva do estereoscópio. Temos, no final, a foto do setup utilizado.
Quando não especificado, foi utilizada abertura f/5.6, tempo de exposição 1/40, ISO 800.
Clique nas fotos para ampliar ou botão direito -> ver imagem.
Divirta-se:
Led azul. Dá para ver as conexões elétricas.
Led verde. O plástico distorcia a imagem, mas mesmo assim dá para ver a pastilha acendendo
Led vermelho, eu achei essa sequência a mais bonita. Dá para ver o led acendendo, praticamente sem distorção alguma. Me lembrou o buraco negro do filme Intesrstellar.
Setup utilizado para fotografar os leds azul, verde e vermelho.
O que tem a ver uma tradicional receita de pudim e a contagem binária de 8 bits, indo de zero a 255?
Pergunta respondida originalmente no Quora em 25/02/2021
Pudim de 8 bits:
Foto: Acervo pessoal
Ingredientes:
1 lata de leite moça
2 medidas de leite da lata de leite moça.
4 ovos (tire a pele da gema).
8 colheres de sopa, bem cheias de açúcar.
Modo de preparo:
Por 16 minutos aqueça o açúcar em uma forma de pudim até formar o caramelo de açúcar. Cuidado para não queimar o açúcar. Espalhe esse caramelo pela forma até ela ficar bem amarelinha.
Por no máximo 32 minutos, bata em um liquidificador a 1 medida de leite moça, as 2 medidas de leite e os 4 ovos.
Coloque, na forma caramelizada, o conteúdo previamente batido no liquidificador.
Asse o pudim em Banho Maria por 64 minutos em um forno pré aquecido a 128°C, assim que colocar a forma no forno, ajuste a temperatura do forno para que fique em torno de 255°C.
Os fios de energia tem duas fases de 127V, essas fases estão em sentido opostos? Se não, como eles são somados para formar 220V?
A resposta que vou dar aqui é baseada na energia elétrica que é fornecida em minha residência. Para outras unidades consumidoras, a resposta pode ser diferente, ok?
Olhando a conta de energia elétrica:
Olhando a conta de energia elétrica de minha casa, conforme figura 1 abaixo, podemos ver que o tipo de fornecimento de energia elétrica é monofásico (guarde essa informação).
Figura 1: Conta de energia monofásica.
Com essa informação dá para falar com segurança que a energia elétrica que chega em minha residência é monofásica a 3 fios.
Pera lá e a pergunta:
É exatamente aqui que entra a pergunta do Quora: Como a energia fornecida pode ser monofásica se chegam 3 fios na residência?
Como se a gente medir do neutro para cada uma das supostas fases dá 127Volts e se a gente medir entre as duas supostas fases temos 220Volts?
Que mutreta é essa?
Me explica isso aí que preciso saber 🙂
O transformador no poste:
Como sempre sem entrar em muitos detalhes, podemos dizer que o transformador lá da rua é um monte de fio enrolado de tal maneira que seja possível reduzir a alta tensão da rua para os 220Volts que utilizamos em casa.
A parte do transformador que recebe a alta tensão da rua é chamada de primário do transformador e a parte que entrega os 220V para as residências é chamada de secundário do transformador.
Focando no secundário do transformador.
A grosso modo, podemos dizer que o secundário do transformador, nesse caso, é composto por 3 enrolamentos ligados conforme figura 2 abaixo, que compõem as 3 fases de um sistema trifásico:
Figura 2: Ligação delta do secundário.
Esse diagrama de ligação do secundário do transformador é chamado de ligação delta. Também tem a ligação estrela que não vou abordar nessa resposta.
Note que os enrolamentos do transformador são ligados “no formato” de um triângulo e que temos as seguintes tensões de fases:
Tensão de fase 1 entre o ponto A e C, fornecendo 220Volts.
Tensão de fase 2 entre o ponto B e C, fornecendo 220Volts.
Tensão de fase 3 entre os pontos A e B, fornecendo 220Volts.
Agora as coisas começam a ficar interessantes:
Os fios que saem dos pontos A, B e C se chamam “fase” e muitos técnicos confundem o fio de fase com a tensão de fase que é algo totalmente diferente.
A tensão de fase é medida, nesse caso, entre dois fios de fase. Um fio de fase está saindo do ponto A e o outro fio de fase está saindo do ponto C.
Quando eu meço a voltagem entre os fios de fase que saem do ponto A e C, eu estou medindo apenas uma tensão de fase, que nesse caso é a tensão de fase 1.
Na minha residência não tem como ter as outras 2 tensões de fase porque está faltando o fio de fase que sai do ponto B. Simplesmente não dá para usar as outras duas tensões de fase.
Por isso é que o sistema é monofásico. Ele é monofásico porque está chegando na unidade consumidora apenas uma tensão de fase.
Eu tenho o neutro e 2 fios de fase que me permitem utilizar apenas uma tensão de fase ;-).
Ok, ainda está faltando o neutro. De onde vem o neutro?
Ainda olhando na figura 2, dá para ver que tem um fio saindo do meio do enrolamento do transformador que faz a fase 1. Ele é o neutro.
Abaixo segue o detalhe da fase 1, mostrando a ligação do fio neutro na rua e nos fios que chegam em casa:
Figura 3: A origem do fio neutro
O fio neutro é uma derivação bem no meio do enrolamento do transformador.
Por isso que a voltagem sai meio a meio, mas mesmo assim a tensão não muda de fase.
Explicando melhor:
Digamos que esse enrolamento entre os pontos A e C tenha 220 espiras (voltas).
Podemos dizer que os 220Volts estão distribuídos entre o ponto A e C do enrolamento do transformador.
Como esse enrolamento tem 220 espiras, podemos dizer que cada espira é responsável por fornecer 1 volt.
À medida que vou subindo as espiras, a voltagem vai subindo até eu chegar na última espira e enxergar os 220Volts entre o ponto A e C.
Não há mudança de fase quando eu caminho do ponto A para o ponto C do enrolamento e vou medindo a tensão das espiras, ou vice versa. A tensão medida apenas aumenta ou diminui, mas sempre permanece em fase. Por isso que é monofásico.
Se eu parar na metade do caminho entre A e C e fizer uma derivação naquele ponto e o chamar de neutro, a tensão de saída do neutro para o ponto A ou C será exatamente a metade da tensão entre o ponto A e C.
Aí o que os caras fazem?
“Eles” aterram essa derivação central do transformador da rua, justamente aquele fio que sai do meio do enrolamento.
Então eles “batizam” de neutro essa derivação central que foi previamente aterrada.
Dizem que “não dá choque”,
Nos dizem que ele é o ponto de referência para medir tensão
E aí a gente mede do meio do enrolamento do transformador para cada uma das pontas e encontra os 110Volts
E aí a gente mede entre os pontos A e C e encontra os 220Volts
E fica pensando que são duas fases, só que não é isso por conta da maneira que o enrolamento do transformador foi construído.
É só uma bobina com uma derivação central no enrolamento do transformador, cuja derivação central, “por acaso” foi aterrada.
De quebra, temos que dentro da casa, o neutro e terra tem o mesmo ponto de origem.
Enquanto o terra serve para proteger dispositivos elétricos e pessoas, o neutro permite que a residência seja alimentada com uma tensão menor e mais segura.
Note também que o neutro é aterrado tanto no poste como na caixa de medição de energia elétrica e o aterramento dentro da unidade consumidora deve ter uma origem única.
É isso. Espero que tenha conseguido esclarecer essa dúvida.
Fonte:
MARTIGNONI, Alfonso. Transformadores. 8. ed. São Paulo: Globo, 1969. 307 p. (ISBN: 85-250-0223-2).