Por que aprender hexadecimal? [fechadas]


28

Tive algumas aulas de programação introdutórias em meu dia, principalmente para me molhar em todos os tipos diferentes de programação que encontro. Não é de surpreender que quase todas as classes executem o mesmo formato: introdução ao hardware, introdução ao software e, em seguida, você entra na programação real. Embora seja muito importante entender como o hardware e o software funcionam, sempre fiquei confuso com um tópico que esteve presente em todos os cursos.

Na seção de introdução ao software, descobri, sem falhas, que sempre enfatizam muito a alfabetização em sistemas de números binários, hexadecimais e às vezes até octais. Entendo que é bom entender o que são essas coisas e como um computador as interpretaria, mas nunca me vi precisando realmente saber ler e escrever qualquer um desses sistemas numéricos. Realmente, a única vez que vi algo diferente da base 10 é em cores em CSS, o que é ainda mais fácil se você usar algo como www.colorpicker.com

Acabei de ignorar os usos maravilhosos desses sistemas numéricos que não são da base 10 no mundo da programação ou é apenas uma tradição antiga incluir essas seções em todos os livros didáticos de programação? Alguém tem um bom exemplo de onde o programador médio usaria realmente um número octal?


1
Alguém tem um bom exemplo de onde o programador médio usaria realmente um número octal? Sim, se você estiver escrevendo um software relacionado ao setor de aviação, provavelmente encontrará códigos de transponder, que são um número octal de quatro dígitos. pt.wikipedia.org/wiki/Transponder_%28aviation%29
Ben Cottrell 02/02

Respostas:


14

Todas as respostas são boas, mas não abordam o que eu acho que é a parte mais valiosa. Aprender a "pensar" em diferentes bases o torna muito mais fluente na maneira como os computadores lidam com números.

Se você quisesse armazenar uma série de letras minúsculas bem compactadas, como faria isso?

Bem, existem 26 letras minúsculas, que se traduz facilmente em um intervalo de 0 a 31, que é um número de 5 bits, você pode agrupar 6 números de 5 bits em um campo de 32 bits (int?) E ainda ter sobras suficientes por alguns sinais de pontuação.

Não estou dizendo que o hex ajuda com coisas assim, mas entendo como os números convertidos são.

Outro caso, de vez em quando você usa a base-64 para passar números um pouco longos em ascii. Você saberia como implementar isso? Por que implementá-lo dessa maneira? Você percebeu que era isso que estava digitando toda vez que digitava o "CD KEY" na caixa de registro de um jogo?

Além disso, por diversão, brinque com a base 12 por algum tempo. A matemática acaba sendo realmente interessante na base 12 (a base 10 é estúpida em comparação, eu gostaria que tivéssemos evoluído com 6 dedos - poderíamos estar décadas à frente em nossa compreensão da matemática). Alguns humanos primitivos muito inteligentes usaram a base 12 para desenvolver o relógio.

Na base 10, temos 3 números "legais" que criam padrões fáceis, 2, 5 e 9 com 8, 6 e 4 como números legais "secundários". Na base 12, você tem 2,3,4,6,11 como números "legais" com 8,9 e 10 como números legais "secundários", o que significa que, se usássemos a base 12, seria muito melhor reconhecer padrões nos números porque estaríamos vendo eles o tempo todo.

Além disso, binário. Você pode contar com uma mão até 32 - eu faço isso bastante, às vezes é útil quando contar até 5 simplesmente não funciona :)

Binário é muito divertido, mas simplesmente não se traduz bem. Quando você fica bom com hex, começa a ver "A" como 1010 e "5" como 0101, e essas coisas começam a realmente importar. Se você tem um campo de bits que deseja extrair o sexto bit: 00100000, com o que você "e" ele? Você só deve saber que é 0x20.

Se você vir um código com 0x0600, quais bits estão sendo extraídos? Você deve saber sem sequer pensar nisso - você deve realmente ler isso como se estivesse escrito 0000011000000000 (mas mais fácil de ler porque você não precisa contar zeros).

Por que você deseja limitar seu cérebro e sua capacidade de processar dados?


Na verdade, os relógios foram desenvolvidos na base60 .
Denis de Bernardy

@ Denis Fiquei com a impressão de que a teoria atual era de que eles foram desenvolvidos por um povo que contava na base doze que perdia para pessoas mais burras que não podiam pensar que passavam os dedos. 60 é apenas as 12 divisões divididas em grupos de 5 e parece ser uma pós-corte pela base 10 grunhidos :)
Bill K

Pode ser. Para ser sincero, não sou especialista. Seu comentário apenas trouxe de volta alguma lembrança esquecida. Lembro-me também que ângulos medidos em 360 graus vêm da base 60 (e pelos mesmos inventores babilônicos), mas, como você aponta, pode ser que os grunhidos da base 10 simplesmente tenham superado o que originalmente eram matemáticos da base 12. :-) Agora, imagine se estivéssemos contando na base 20, como fizeram alguns índios americanos. :-D
Denis de Bernardy

44

O que aprender? Você precisa entender diferentes bases de números para ser um programador competente, mas em relação ao hex, há pouco a aprender, exceto que o ABCDEF vem depois do 9.


8
OP pode estar se referindo a ser capaz de transpor mentalmente a base 10 de outras bases. Isso pode ter sido uma habilidade útil em um ponto e ainda pode ser para uma certa categoria de programadores de baixo nível, mas hoje é amplamente irrelevante hoje. Você pode fazer a conversão no vim trivialmente, por exemplo.
Rein Henrichs

Está correto. Eu deveria ter sido mais claro.
jwegner

2
@ Rein Eu nunca fui muito bom em fazer isso (eu tenho que fazer as contas na minha cabeça), então não posso dizer. No entanto, eu costumava ser capaz de transpor mentalmente do hex para a linguagem assembly Z80, o que era uma coisa útil a ser feita na época. Eu suspeito que a capacidade de transpor hexadecimal para 80x86 assembler (ou o que seja) ainda é útil para programadores que trabalham hoje.
Neil Butterworth

1
@ Neil Butterworth: 8080 opcodes fazem mais sentido visto em octal, realmente, se a memória serve. Minha memória está muito confusa sobre como isso se aplicava às extensões do Z80.
David Thornley

1
@ Neil: Eu acho que a parte significativa foram as instruções de movimento de registro em registro, que parecem ser 01xxxyyy no formato bit, onde xxx é o destino e a fonte aaaa. Não sei se há outro significado octal.
David Thornley

18

Alguém tem um bom exemplo de onde o programador médio usaria realmente um número octal?

Octal? Geralmente não, com exceção das permissões * nix.

Hexadecimal? Pode apostar. Você está ignorando o grande número de nós que está embaralhando bits em torno de sistemas embarcados, observando protocolos ou formatos de arquivo em um nível de bit, etc. Mas com certeza, se você estiver longe do trabalho de fazer aplicações ou trabalhos na Web, poderá se safar mais facilmente.

Exemplo: Registros de configuração em microcontroladores e similares.

Pegue o número 54312, obtido por teclas aleatórias. Você pode dizer quais bits estão definidos? Não posso, pelo menos não do topo da minha cabeça. O equivalente hexadecimal então, é 0xd428. Aquelepor outro lado, me diz imediatamente que o padrão de bits que eu estou vendo é 1101 0100 0010 1000. É mais logicamente estruturado para esse tipo de coisa, e você precisa disso o tempo todo quando está perto do metal. Digamos que o número acima é o que recebo na redefinição do mcu, e que preciso dos bits 7 e 9 definidos por algum motivo. Em hexadecimal, posso ver facilmente que o número resultante deve ser 0xd6a8, mas em decimal? Isso é 54952, nem de longe tão intuitivo se você me perguntar. Claro, é uma questão de adicionar 640 ao valor, mas é mais difícil descobrir. Obviamente, na prática, pode-se simplesmente mudar os bits para a posição correta e OU com o valor original, mas você ainda pode querer saber qual é a representação final.


1
Que tipo de pergunta a pergunta "por que eu deveria me importar com quais bits estão definidos?" Para alguns (muitos? Mais?) Aplicativos, isso não é relevante.
Neil Butterworth

10
Concordo - supondo que estamos falando de desenvolvimento de alto nível. Baixo nível, seja um pouco particular é definido ou limpo não só pode, mas vai às vezes determinar se as sangrentas micro botas em tudo, ou se um determinado periférico você precisa recebe energia, ou se ele corre a uma velocidade de clock de x em vez de y . Esse é apenas o começo e, se você lida com esse tipo de desenvolvimento, basicamente, os bits únicos são importantes. Às vezes muito. Mas, novamente, depende do seu domínio, só estou dizendo; Não esqueça o mundo incorporado. =)
n42

1
+1 - quanto mais perto da máquina você ficar, mais precisará usar bases diferentes. Não é apenas incorporado; a maioria dos idiomas possui sinalizadores de bits e geralmente são escritos em hexadecimal por razões óbvias. Por outro lado, é inútil ensinar em um primeiro curso de programação, mas a maioria dos primeiros cursos de programação é inútil. Quase todos os programadores se ensinam certo?

1
@ Davor: É porque hex é mais fácil de ler. Consigo entender um valor hexadecimal de 8 dígitos muito mais rápido que um valor binário de 32 dígitos.
Steve S

2
@ Steve S: Sinceramente, suspeito que seja porque também somos um grupo preguiçoso. 0x80 é mais curto do que 0b10000000. Mas eu concordo. Eu também concordo que isso não faz muito sentido em um primeiro curso de programação, mas você pode colocá-lo em matemática discreta, programação em tempo real, organização de computadores e similares.
n42

12

Alguém tem um bom exemplo de onde o programador médio usaria realmente um número octal?

Se você estiver definindo permissões em um arquivo no Unix (ou Linux), use um número octal de 3 dígitos. O primeiro dígito são as permissões do usuário, o segundo são as permissões do grupo e o último dígito são as permissões que todos os outros obtêm.

Eu tive que entender esse fato no código que escrevi na semana passada.

Se você observar a saída de algoritmos de hash padrão, como o MD5, geralmente os encontrará gravados em hexadecimal. Eu já vi vários casos em que isso leva à aritmética em bases incomuns.

Se você deseja entender como o ponto flutuante é representado internamente e, portanto, por que 1/10 não é representado com precisão, é absolutamente necessário entender como fazer aritmética em diferentes bases. Esse é um conhecimento esotérico até o dia em que você o retira e, de repente, você realmente precisa entendê-lo às pressas.

E existem muitos outros casos em que você encontrará a natureza binária fundamental dos dados dentro dos computadores surgindo. Obviamente, se você está apenas escrevendo um site CRUD, provavelmente nunca encontrará nenhum deles, porque isso acontece em níveis com os quais alguém já lidou.


4
As permissões * nix não são octais verdadeiras. Você não realiza cálculos matemáticos com essas representações. Na melhor das hipóteses, são representações octais de uma máscara binária.
Joel Etherton

@ Joel Etherton: Quando você obtém as permissões de um arquivo stat, elas aparecem como números que, por padrão, serão exibidos na base 10. Se você não entende a conversão de / para octal, esses números são difíceis de entender. Eu estava escrevendo uma documentação que precisava explicar esse fato. Havia muitos cálculos matemáticos.
btilly

@tilly: Você entende mal o que estou dizendo. Se você definir permissões em um arquivo para 755, não precisará adicioná-lo a nada. É apenas uma máscara que descreve as combinações de permissão. Claro que você precisa reconhecer que isso significa (4 + 2 + 1) (4 + 0 + 1) (4 + 0 + 1), mas essas ainda são apenas representações da máscara binária. A que você se refere quando diz "file stat"? Eu nunca vi uma estatística de arquivo para permissões entregues na base 10 (seguindo estritamente esse exemplo).
Joel Etherton

1
@ Joel Etherton: Tente perl -le '@stat = stat(shift); print $stat[2]' some_filee você receberá uma estatística como um número na base 10. Você precisa passá-la para o Perl da chmodmesma maneira. Portanto, faz sentido armazenar o número dessa maneira em um banco de dados; nesse momento, eu preciso documentar o que esses números têm a ver com permissões Unix mais familiares. Como eu disse, este não era um exemplo hipotético.
btilly

@ Joel Etherton: digamos que você tenha um arquivo cujas permissões sejam 419 (decimal), você deseja tornar o arquivo executável pelo usuário, mas não legível pelo mundo. Como você precisa modificar o número? O valor retornado na chamada C stat () é um int, como você escolhe imprimir é outro problema.
Vatine 9/06

9

Felizmente, no mundo real, você não será questionado sobre a conversão de Hex para binário em decimal. Você terá ferramentas à sua disposição para converter da maneira que desejar.

Concordo que você deve entender o que está acontecendo, mas por que memorizar quando pode procurar?

No entanto, achei útil lembrar os números-chave (para mim 0x64 = 100, 0xFF = 255, 0xFFFF = 65535, etc.) porque eles aparecem muito.

Eu poderia recitar o que 8675309 está em binário, hex e octal? Não, mas posso abrir uma ferramenta que pode quando preciso.


3
Você esqueceu 57005, comumente usado como constelvis = 57005;
Bevan

5

A única coisa que eu já usei octal é para permissões de arquivo em sistemas unix.

Hex e binário são muito úteis se você trabalha com protocolos próximos aos cabos ou perto da transferência de dados metálicos. Fundamentalmente, os dados fluem em binário, que é trivialmente representado petisco de cada vez como hexadecimal.

Você também descobrirá que as folhas de dados costumam citar valores hexadecimais, por isso é melhor mostrar o valor no código como aparece na folha de dados.

Se você usa muito um deles, acaba se tornando bastante eficiente na conversão de e para decimal em sua cabeça, pelo menos para valores comuns.

Tudo o que disse; Eu suspeito que a forte ênfase é principalmente histórica. Como você diz, há muitos programadores que precisam pouco de algo além de decimal.


5

Você está realmente perguntando por que aprender o poder de 2 representações numéricas?

Os computadores são feitos de circuitos , a corrente elétrica flui através dos circuitos em dois níveis diferentes, alto e baixo para representar os dois níveis de correntes, usamos dígitos binários porque eles podem conter dois estados, um (alto) ou zero (baixo).

Dígitos binários formam padrões . Por exemplo, se a única maneira pela qual você e eu podemos conversar for através de um circuito, podemos estabelecer que, se você quiser me enviar a letra A, você me enviará o padrão binário: 1000001. Como sou preguiçoso , Não quero memorizar os sete e sete dígitos. Em vez disso, usarei um sistema de numeração com potência 2 para representar dígitos binários grandes em um menor. Eu posso usar 8 (2 ^ 3) ou 16 (2 ^ 4).

Como você pode ver, a maioria dos hardwares e softwares de computador usa uma representação binária e nós, humanos, usamos duas representações como octal e hexadecimal para ler a representação binária de uma maneira mais eficiente e indolor.

Agora exemplo do programador médio que precisa entender o poder de 2 representações:

  1. ASCII
  2. Unicode
  3. Noções básicas sobre programação de gerenciamento de memória (pilha, pilha, endereços de memória, dumps principais)
  4. Depuração
  5. A leitura de dados binários é feita principalmente no editor Hex.

Agora, meus últimos dois centavos, estou muito confiante de que você pode aprender rapidamente qualquer poder de 2 representações (já que você já administrou cursos de programação introdutórios). Você pode esquecer a conversão, mas não deve ser um conceito estrangeiro, se quiser para ser um programador médio.


3

Eu nunca usei octal, mas não é incomum ver hex no depurador e, ocasionalmente, faz muito mais sentido usar hex em seu código-fonte (normalmente, porque os dados subjacentes são sinalizadores de bits).


3

Não sei se há muita necessidade hoje em dia, mas muitos anos atrás, quando eu era um programador de sistemas, ser capaz de ler e entender o hex era essencial. Seria apresentado um despejo de armazenamento (todo em hexadecimal) e decodificaria a representação hexadecimal novamente na linguagem IBM Assembly. Depois de fazer isso por um tempo, você acaba sendo capaz de fazê-lo diretamente - leia o hexágono e escreva o equivalente da montagem. Muito útil para depuração. Adicionar e subtrair valores hexadecimais foi útil para calcular compensações de registros base.

Suspeito que exista pouca necessidade na prática agora, mas o conhecimento dela dificilmente pode ser uma coisa ruim.


Foi aí que eu adquiri minhas habilidades também. Mais tarde, fui aprimorado quando fui forçado a depurar código sem um depurador simbólico no VAX / VMS (enviamos código para clientes sem nenhuma informação de símbolo). Atualmente, raramente o uso, embora codificemos algumas informações em certos URLs em hexadecimal e, de vez em quando, é útil poder decodificá-los rapidamente.
TomG

3

Não se trata de ser "fluente" na leitura de binário / hexadecimal, mas confortável o suficiente para que você possa rapidamente fazer uma conversão mental quando os encontrar. Imagine programar sem se sentir confortável com a aritmética simples, e você precisava ir a uma calculadora toda vez que precisava multiplicar por dois.

O hexadecimal / binário é importante porque esse é o idioma em que os computadores falam. Você sempre o encontrará em alguns lugares, especialmente quando passa por exercícios de depuração e seus dados estão em hexadecimal.

Eu também enfatizaria a importância de entender a base 2 no contexto de como diferentes tipos numéricos são representados internamente e como a aritmética funciona. Com isso, você terá uma melhor noção de quando e como lidar com problemas de arredondamento de ponto flutuante e excesso de número inteiro, por exemplo.

Como mais um exemplo, as operações bit a bit e os sinalizadores de bit ainda prevalecem na programação, e este é outro local em que o entendimento da base 2 é importante.


2

Realmente, a única vez que vi algo diferente da base 10 é em cores em CSS,

Você nunca precisou procurar um caractere nos gráficos de código Unicode ? Nunca viu um URL %20nele? Nunca usou um GUID ? Nunca viu um endereço IPv6 ? Nunca escreveu um BLOBliteral em SQL? Nunca viu um arquivo em um editor hexadecimal? Há um monte de coisas relacionadas a computadores que são notadas em formato hexadecimal.

Quanto ao octal, é raro atualmente, mas ainda é usado para permissões do sistema de arquivos Unix.

Veja também: aplicações práticas de operações bit a bit

Mesmo que você consiga evitar fazer qualquer programação "próxima ao fio", ainda é importante estar ciente do fato de que os computadores operam em binário, por um simples motivo: as abstrações vazam .

A intabstração na maioria dos idiomas vaza sua natureza de largura fixa. Os números inteiros excedem e o fazem em números binários "redondos", como 2 31 . Um pensador apenas decimal não seria capaz de explicar o bug do ano 2038 .

A abstração float/ doublevaza sua raiz de 2. Se você escrever 0.1, você realmente recebe 0.1000000000000000055511151231257827021181583404541015625. E você receberá bugs se esperava um 0.1 exato.


2

O reconhecimento de números específicos cujos padrões são simples em outras bases geralmente é uma pista importante na solução de bugs. Se a sua resposta está errada em 347, isso talvez não signifique nada, mas se estiver desativado em 256 ou 128, talvez isso signifique alguma coisa. Se você colocar -1 em um tipo de dados de 16 bits não assinado, obtém 65535, ou seja, 1 a menos que 65536. Se você conhece 2 ^ 16, identifica seu problema imediatamente.

Quanto ao octal, dê uma olhada nessas perguntas e veja se o reconhecimento octal quando você solicita acidentalmente teria tornado qualquer uma dessas pessoas melhores programadores.


1

Existem algumas técnicas de compactação de dados e matemática altamente eficazes que você pode usar quando entender esses sistemas e como eles funcionam. Você provavelmente não os usará muito em seus primeiros trabalhos. Mas é bom tê-los no bolso de trás quando se tornar um veterano e você for solicitado a criar o sistema legado sobrecarregado em execução no servidor de dinossauro sobrecarregado e com pouca energia.
Torna-se mais importante quando você lida com controladores e eletrônicos que não possuem uma API. Especialmente se você estiver escrevendo essa API.


1

Na introdução aos cursos de programação que fazem parte dos estudos em ciência da computação, faz muito sentido conhecer bem esse material. Você revisita o tópico ao programar em linguagem assembly, ao projetar hardware, fazer um curso sobre linguagens formais etc. Todos os engenheiros elétricos da minha universidade exigem um curso de introdução à programação e provavelmente continuarão usando essas informações. Fora isso, não é muito importante.


1

Os números octais são ocasionalmente úteis ao lidar com conjuntos de caracteres. Os últimos são baseados em bytes e um octal = 8 bits = um byte. No UTF-8, por exemplo, caracteres não ASCII podem ter dois ou mais bytes; números octais são mais convenientes para representá-los do que números hexadecimais.

Os bits são úteis porque ... ei! Você sabe que seu computador está constantemente lidando com 0s e 1s, certo? Quero dizer a sério ... Não se trata apenas de ser capaz de brincar que os cientistas da computação são os únicos que sabem que 1 + 1 = 10. Também é útil para operadores relacionados a bits ou como varbits. Este último permite reduzir os requisitos de armazenamento em bancos de dados ao lidar com séries de sinalizadores.

Quanto ao hexadecimal, suponho que você nunca abriu um editor hexadecimal para aumentar as estatísticas e o equipamento do seu personagem de RPG. Se você tivesse feito isso em vez de baixar um editor de personagens, saberia muito bem por que é conveniente poder entender os números hexadecimais. ;-)


Eu acho que você quer dizer "octeto", não "octal". Um dígito octal é de três bits. O uso de constantes octais para caracteres não ASCII é um resquício dos primeiros dias de C, desenvolvido em um PDP-11, que utilizava representação octal na maior parte da documentação (consulte este cartão de referência do PDP-11 ).
TMN

Eu posso ser. Inglês não é minha língua materna. :-)
Denis de Bernardy

1

Eu me formei na universidade há 3 anos e acho muito importante poder ler e escrever números hexadecimais. Eu mexo com muitos arquivos XML grandes para o trabalho (grande significado 100 MB +). Às vezes, você obtém um arquivo XML que contém caracteres XML inválidos, que não são exibidos em nenhum editor de texto, então eu tive que usar o editor Hex e escrever código para identificar os caracteres inválidos. Essa tarefa seria muito difícil sem saber o número hexadecimal.


1

Muitos anos atrás eu aprendi o valor do hex enquanto trabalhava em sistemas de 8 bits.

A clareza de entender que algo estava localizado na B000 ou na E7FF foi incrível.

Ontem, eu precisava saber exatamente quais eram os caracteres no final de uma linha de texto. Saber a diferença entre 0x0A e 0x0A 0x0D pode ser realmente importante.


1

Alguém tem um bom exemplo de onde o programador médio usaria realmente um número octal?

O octal hoje em dia é bastante raro, mas eu uso hexadecimal com muita frequência e frequentemente penso em problemas no binário.

Eu programo principalmente em C e C ++, com algum objetivo C, e faço muito trabalho com gráficos de varredura e vetoriais no Linux e no Mac OS X. Nessas áreas, é fundamental escrever código que seja executado com eficiência e faça bom uso do armazenamento. Você também precisa entender como as máquinas representam internamente o que você está trabalhando. A maneira mais conveniente de ver isso é hexadecimal. Por exemplo, um pixel colorido de 24 bits é representado em três bytes, e saber rapidamente que 0x000000 é preto, 0x00FF00 é vermelho e 0x008000 é rosa é muito, muito útil!

Também trabalho muito com padrões internacionais para formatos de arquivo. Com quem trabalho recentemente, o MXF, usado para armazenar vídeos para transmissão, DVDs, etc. É um formato binário e, novamente, é mais fácil lidar com o uso de hex ou, às vezes, binário. Quando você está depurando por que um vídeo baseado em MXF não está sendo reproduzido diretamente no seu sistema, é realmente útil poder dar uma olhada em algum campo de 32 bits e perceber que o bit em branco da tela é definido inadvertidamente - e você pode fazer isso isso em hexadecimal, mas é praticamente impossível na base 10.

Se você vai passar sua carreira escrevendo Perl para massagear seqüências de texto, então não, provavelmente não precisa estar muito familiarizado com hex, octal ou binário. Mas no momento em que você começa a lidar com o tipo de coisa que faço, hex e binário são essenciais.


0

Você deve saber hexadecimal se quiser ser um programador. Seria estranho demais para você ter que admitir no trabalho no dia raro que você precisa saber que não entende.

Não significa que você precise adicionar números hexadecimais na sua cabeça. Ele começa a bagunçar as regras para adição regular, se você fizer assim mesmo. :)


0

O que binário, hex e octal têm em comum não é que eles não são base10, mas que são todos os poderes de dois. Como os computadores são inerentemente binários, isso fornece a cada um deles algum aplicativo onde eles são a maneira mais apropriada ou eficiente de exibir e lidar com dados.

Isso costumava ser muito importante, quando toda a programação era de baixo nível. Na programação de alto nível que hoje, os sistemas numéricos com potência de 2 são muito menos importantes. Ter uma introdução completa a eles em todos os cursos de programação pode ser uma relíquia dos velhos tempos.

Mas esses sistemas de números ainda têm seus usos, mesmo quando você trabalha em idiomas de alto nível. A cor, por exemplo, ainda é armazenada em 24 bits, 8 bits por cor primária. E como hexadecimal é a melhor maneira de representar um byte de maneira legível por humanos, ele faz parte do CSS, que deve ser usado por pessoas que nunca tiveram uma introdução à programação.

Você não pode entender computadores sem entender binário. Uma introdução ao binário é uma parte necessária de toda introdução completa à programação. Talvez você não precise fazer muitas conversões entre sistemas numéricos no trabalho diário, mas fazer exercícios como esse é o único meio de realmente se familiarizar com esses sistemas *. Conhecer mais de um sistema de número não base10 é a única maneira de entender corretamente, que os dados podem ser representados de várias maneiras, todas válidas.

  • Como John von Neumann disse: "[..] não entendemos as coisas, nos acostumamos a elas".

0

Eu acho que a conversão como tal de uma base para outra não é muito importante para a programação. Na programação de alto nível, você não precisa das conversões (e pode fazê-lo, as funções lib e a calculadora estão disponíveis.) Quando você mergulha na programação de nível inferior, não está mais em um curso introdutório.

Eu acho que duas questões (relacionadas) são importantes para abordar em um curso básico.

  1. Sobre codificação. Não se trata de conversão matemática, mas de usar números (qualquer tipo de número) para armazenar informações (qualquer tipo de informação). Você pode ilustrar isso com código morse ou pintar com números também, se desejar. Porém, como os computadores usam binário e o binário geralmente é exibido como hexadecimal, as coisas geralmente são ilustradas com exemplos hexy. (E, enquanto estão nisso, eles podem explicar um pouco sobre as terminações de linha, mencionadas neste tópico. Eu recomendaria apenas reconhecer as várias formas e formas que isso poderia levar, algumas delas são 0x0D, 0x0A , CRLF, '\ n' e '\ r')

  2. Problemas de estouro. Mais uma vez, não há necessidade de ilustrar isso com hexadecimal. Você pode usar o exemplo y2k (que não tem nada a ver com hexadecimal). Aqui também aconselho a reconhecer os vários indicadores mais prováveis ​​(255, 32767, 65535, 2M14). Por que eles são indicadores está diretamente ligado à natureza bytewise de armazenamento interno, mas a conversão não é a parte importante.

Eu discordo que você precisa conhecê-lo para bitflags (porque em um curso de introdução à programação, constantes nomeadas são muito mais instrutivas e úteis.)


0

Se você entrar em programação incorporada de baixo nível, estará usando hexadecimal. É usado para coisas como especificar padrões de bits em registros de hardware e valores de bytes em despejos de memória. Você também aprenderá a usar todos os operadores de bits em qualquer linguagem de programação usada.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.