Expressar 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 conhecido como valores BITS.

Na maioria das vezes, você realmente não precisa lidar com os bits em particular que você usa para representar números. Às vezes, porém, é prático e conveniente para mexer com números no nível bit - para C ++ fornece um conjunto de operadores para o efeito.

O assim chamado bit a bit operadores lógicos operar em seus argumentos no nível de bit. Para entender como eles funcionam, primeiro examinar como os computadores armazenar variáveis.

O sistema de numeração decimal

Os números que você esteve familiarizado com a partir do momento que você poderia primeiro contar nos dedos são conhecidos como números decimais porque eles são baseados no número 10. Em geral, o programador expressa variáveis ​​C ++ como números decimais. Assim, você pode especificar o valor de var como (digamos) 123, mas considerar as implicações.

Um número tão elevado como 123 refere-se a 1 * 100 + 2 * 10 + 3 * 1. Todos esses números de base - 100, 10 e 1 - são potências de 10.

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

Expressa de uma forma ligeiramente diferente (mas equivalente), 123 se parece com isso:

Video: RECURSIVIDAD: NUMERO ENTERO A BINARIO EN C++

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

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

Outros sistemas numéricos

Bem, ok, usando 10 como a base (ou base) Do nosso sistema de contagem provavelmente decorre de os 10 dedos humanos, as ferramentas de contagem originais. Uma base alternativa para um sistema de contagem poderia facilmente ter sido 20.

Video: Tutorial C Decimal a binario

Se o nosso esquema de numeração tinha sido inventado pelos cães, ela poderia muito bem ser baseado em 8 (um dígito de cada pata está fora de vista sobre a parte de trás da perna). Matematicamente, tal octal sistema teria funcionado tão bem:

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

O pequeno 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. Computadores prefiro contar com base 2. O número 12310 seria expresso da seguinte maneira:

12310 = 0 * 27 + 1 * 26 + 1 * 25 + 1 * 24 + 1 * 23 + 0 * 22 + 1 * 21 + 1 * 2012310 = 128 + 0 * 1 * 64 + 1 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1 = 011110112

convenção de informática expressa números binários utilizando 4, 8, 16, 32 ou até mesmo 64 dígitos binários, mesmo se os dígitos são 0. Esta é também por causa da forma como computadores são construídos internamente.

Video: [C] Aula 67 - Arquivos - Parte 2 - Arquivos texto e binário

Porque o termo dígito refere-se a um múltiplo de 10, uma Digito binário é chamado de pouco (Uma abreviatura de Digito binário). UMA byte é constituída por 8 bits. (Chamar um dígito binário um byte-lo não parece ser uma boa idéia.) A memória é geralmente medido em bytes (como rolos são medidos em unidades de dúzia de padeiro).



Com uma pequena base de tal, você tem que usar um ampla número de bits para expressar números. Os seres humanos não quer o incômodo de usar uma expressão como 011110112 para expressar um valor tão simples como 12310. Programadores preferem expressar números usando um número par de bits.

O sistema octal - que é baseado em 3 bits - foi o sistema binário padrão nos primeiros dias de C. Vemos um vestígio deste até hoje - uma constante que começa com um 0 é assumido como octal em C ++. Assim, a linha de:

cout lt; lt; "0173 = " lt; lt; 0173 lt; lt; endl-

produz o seguinte resultado:

0173 = 123

No entanto, octal foi quase completamente substituído pelo hexadecimal sistema, que é baseado em dígitos de 4 bits.

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

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

Programadores preferem expressar números hexadecimais em múltiplos de 4 dígitos hexadecimais mesmo quando o primeiro dígito em cada caso é 0.

Finalmente, quem quer expressar um número hexadecimal, como 7B16 usando um subscrito? Terminais nem sequer Apoio, suporte subscritos. Mesmo em um processador de texto, é um arraste para alterar as fontes de e para o modo subscrito apenas para digitar dois dígitos ruins.

Portanto, os programadores (há tolos, eles) usam a convenção de começar um número hexadecimal com um 0x. Portanto, 7B torna-se 0x7B. Usando esta convenção, o número hexadecimal 0x7B é igual a 123, enquanto decimal 0x123 hexadecimal é igual a 291 decimal. O trecho de código

cout lt; lt; "0x7B = " lt; lt; 0x7B lt; lt; endl-cout lt; lt; "0x123 = " lt; lt; 0x123 lt; lt; endl-

produz o seguinte resultado:

0x7B = 1230x123 = 291

Você pode usar todos os operadores matemáticos em números hexadecimais, da mesma forma que você aplicá-los em números decimais.

Video: Números Binários - Bases Numéricas #02

Se você realmente quiser, você pode escrever números binários em C ++ `14 usando o prefixo ‘0b’. Assim, torna-se 123 0b01111011.


Publicações relacionadas