Expressando números binários em C ++

variáveis ​​C ++ são armazenadas internamente como os chamados números binários. Os números binários

são armazenados como uma sequência de 1 e 0 como valores conhecidos BITS. Na maioria das vezes, você realmente não precisa lidar com números no bit nível-no entanto, há ocasiões em que isso é conveniente. C ++ fornece um conjunto de operadores para esta finalidade.

Os chamados operadores lógicos bit a bit operar em seus argumentos no nível de bit. Para entender como eles funcionam, analisar como as variáveis ​​computadores da loja.

O sistema de numeração decimal

Os números que você está familiarizado com são conhecidos como números decimais porque eles baseiam-se no número 10. Em geral, o programador expressa variáveis ​​C ++ como números decimais. Assim, você diria que o valor de var 123 é, por exemplo.

Um número tão elevado como 123 refere-se a 1 * 100 * 10 + 2 + 3 * 1. Cada um destes números básicos - 100, 10, e 1 - é uma potência de 10.

123 = 1 * 2 * 100 + 10 + 3 * 1

Expressa de uma forma ligeiramente diferente, mas equivalente:

123 = 1 * 102 + 2 * 101 + 3 * 100

Lembre-se que qualquer número elevado à potência zero é 1.

Outros sistemas numéricos

O uso de um número de base de 10 para o sistema de contagem de hastes, com toda a probabilidade, a partir do facto de que os seres humanos têm dedos 10, as ferramentas de contagem originais. A alternativa teria sido base 20.

Se os cães tinham inventado o nosso esquema de numeração, pode muito bem ter sido baseada no numeral 8 (um dígito de cada pata está fora de vista sobre a parte de trás da perna). tal octal sistema teria funcionado tão bem:

12310 = 1 * 82 + 7 * 81 + 3 * 80 = 1738

A pequena 10 e 8 aqui referem-se ao sistema de numeração, 10 para decimal (base 10) e 8 para octal (base 8). Um sistema de contagem pode usar qualquer base positiva.

O sistema numérico binário

Os computadores têm essencialmente dois dedos. (Talvez por isso os computadores são tão estúpidos: Sem um polegar opositor, eles não podem compreender qualquer coisa E então, novamente, talvez não..) Computadores prefiro contar com base 2. O número 12310 será expresso como:

12310 = 128 + 0 * 1 * 64 + 1 * 32 + 1 * 16 + 1 * 8 + 0 * 4 * 2 + 1 + 1 * 1
= 011110112

É sempre convenção para expressar números binários usando 4, 8, 32 ou 64 dígitos binários, mesmo se os dígitos são zero. Isto também é devido à maneira como os computadores são construídas internamente.

Porque o termo dígito refere-se a um múltiplo de dez, um dígito binário é chamado um pouco. O termo deriva de binário (b-) dígitos (-é). Oito bits compõem um byte. Uma palavra é normalmente dois ou quatro bytes.

Com uma pequena base tal, é necessário utilizar um grande número de bits para expressar números. É inconveniente para usar uma expressão como 011110112 para expressar um valor tão mundano como 12310. Programadores preferem expressar números, unidades de bytes ou oito bits.

Um quatro-bits, um dígito, é, essencialmente, de base 16, porque quatro bits podem expressar-se a qualquer valor de 0 a 15. Base de dados 16 é conhecida como o hexadecimal sistema de contagem. Hexadecimal é frequentemente contratado para simplesmente hex.

Hexadecimal utiliza os mesmos algarismos para os números de 0 a 9. Para os algarismos, compreendido entre 9 e 16, hexadecimal usa os primeiros seis letras do alfabeto: A para 10, para 11 B, e assim por diante. Assim, 12310 torna-se 7B16.

123 = 7 * 161 + B (isto é, 11) * 160 = 7B16

Porque os programadores preferem expressar números 4, 8, 32 ou 64 bits, eles preferem semelhante para expressar números hexadecimais em 1, 2, 4 ou 8 dígitos hexadecimais mesmo quando os dígitos são 0.

Finalmente, é inconveniente para expressar um número hexadecimal, tal como 7B16 usando um subscrito, porque os terminais não suportam subscritos. Mesmo em um processador de texto, é inconveniente para alterar as fontes de e para o modo subscrito apenas para digitar dois dígitos. Portanto, os programadores usam a convenção de começar um número hexadecimal com um 0x (a razão para uma convicção tão estranha remonta aos primeiros dias de C). Assim, torna-se 0x7B 7B. Usando esta convenção, 0x7B é igual a 123 (enquanto 0x123 é igual a 291.)

Todos os operadores matemáticos podem ser realizadas em números hexadecimais da mesma maneira que eles são aplicados aos números decimais. A razão por que não podemos realizar uma multiplicação como 0xC * 0xE em nossas cabeças tem mais a ver com as tabelas de multiplicação que aprendemos na escola do que em qualquer limitação no sistema de numeração.

menu