Expresando números binarios en C ++

Variables de C ++ se almacenan internamente como los llamados números binarios. Los números binarios

se almacenan como una secuencia de valores de 1 y 0 conocen como pedacitos. La mayoría de las veces, usted realmente no necesita para hacer frente a los números en el pedacito nivel- sin embargo, hay ocasiones en las que hacerlo es conveniente. C ++ proporciona un conjunto de operadores para este propósito.

Los llamados operadores lógicos en modo bit operan en sus argumentos a nivel de bits. Para entender cómo funcionan, examinar cómo las variables ordenadores de la tienda.

El sistema de numeración decimal

Los números que está familiarizado con el que se conoce como números decimales debido a que se basan en el número 10. En general, el programador expresa variables de C ++ como números decimales. Por lo tanto, se podría decir que el valor de var es 123, por ejemplo.

Un número tal como 123 se refiere a 1 * 100 + 2 * 10 + 3 * 1. Cada uno de estos números de base - 100, 10 y 1 - es una potencia de 10.

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

Expresado de una manera ligeramente diferente pero equivalente:

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

Recuerde que cualquier número a la potencia cero es 1.

Otros sistemas numéricos

El uso de un número de base de 10 para el sistema de conteo de tallos, con toda probabilidad, el hecho de que los seres humanos tienen 10 dedos, las herramientas de conteo originales. La alternativa habría sido base 20.

Si los perros habían inventado nuestro esquema de numeración, bien puede haberse basado en el número 8 (un dígito de cada pata está fuera de la vista en la parte posterior de la pierna). Como un octal sistema habría funcionado igual de bien:

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

El pequeño 10 y 8 aquí se refieren al sistema de numeración, 10 para decimal (base 10) y 8 para octal (base 8). Un sistema de conteo puede utilizar cualquier base positiva.

El sistema numérico binario

Las computadoras tienen esencialmente dos dedos. (Tal vez por eso las computadoras son tan estúpidos: Sin un pulgar oponible, no pueden entender nada y, de nuevo, tal vez no..) Computadoras prefieren contar usando base 2. El número 12310 se expresaría como:

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

Siempre es la convención para expresar números binarios usando 4, 8, 32, o 64 dígitos binarios, incluso si los dígitos iniciales son cero. Esto también es debido a la forma ordenadores se construyen internamente.

Debido a que el término dígito se refiere a un múltiplo de diez, se llama un dígito binario de una poco. El término se deriva de binario (b-) dígitos (-es). Ocho bits constituyen un byte. Una palabra es generalmente dos o cuatro bytes.

Con una base tal pequeño, es necesario utilizar un gran número de bits para expresar números. No es conveniente utilizar una expresión como 011110112 para expresar un valor tan mundano como 12310. Los programadores prefieren expresar números por unidades de bytes, o ocho bits.

Un único, de cuatro bits dígitos está esencialmente base 16, porque cuatro bits pueden expresar hasta cualquier valor de 0 a 15. Base 16 se conoce como la hexadecimal sistema de conteo. Hexadecimal a menudo se contrajo simplemente hexagonal.

Hexadecimal utiliza los mismos dígitos para los números del 0 al 9. Para los dígitos entre 9 y 16, hexadecimal utiliza las seis primeras letras del alfabeto: A para 10, B para 11, y así sucesivamente. Por lo tanto, 12310 convierte 7B16.

123 = 7 * 161 + B (es decir, 11) * 160 = 7B16

Debido a que los programadores prefieren expresar números en 4, 8, 32, o 64 bits, que de manera similar prefieren expresar números hexadecimales en 1, 2, 4 u 8 dígitos hexadecimales incluso cuando los dígitos son 0.

Por último, no es conveniente para expresar un número hexadecimal como 7B16 utilizando un subíndice, porque los terminales no son compatibles con subíndices. Incluso en un procesador de textos, no es conveniente cambiar las fuentes hacia y desde el modo subíndice sólo para escribir dos dígitos. Por lo tanto, los programadores utilizan la convención de comenzar un número hexadecimal con 0x (la razón de una convicción tan extraña se remonta a los primeros días de C). Por lo tanto, se convierte en 0x7B 7B. El uso de este convenio, 0x7B es igual a 123 (mientras 0x123 es igual a 291.)

Todos los operadores matemáticos se pueden realizar en números hexadecimales de la misma manera que se aplican a números decimales. La razón por la que no podemos realizar una multiplicación como 0xC * 0xE en nuestra cabeza tiene más que ver con las tablas de multiplicar que aprendimos en la escuela que en cualquier limitación en el sistema numérico.




» » » » Expresando números binarios en C ++