Sistemas numéricos Importante para la anotación de números en otros sistemas numéricos es la variable del sistema Bytes y la opción Mostrar ceros a la izquierda. Números binarios ¿Por qué deberíamos preocuparnos por otros sistemas numéricos? El sistema decimal no es suficiente. Bueno, por ejemplo, las computadoras funcionan con valores binarios. Una computadora sólo puede almacenar bits en su memoria. Un bit puede tener un valor 0 o 1, un valor binario. Puede escribir un valor binario como sigue. 0101 02 3 12 2 02 1 12 0 1011 12 3 02 2 12 1 12 0 1111 12 3 12 2 12 1 12 0 etc. Con un número binario de cuatro dígitos puede representar los números decimales de 0 a 15. Para utilizar valores binarios En SpeQ usted tiene que agregar un prefijo 0b al valor, por ejemplo 0b1011. Bytes y valores negativos En los ordenadores los bits se agrupan en bytes: un byte contiene 8 bits. Con un byte puede representar 2 8 256 valores. Con dos bytes puede representar 2 16 65536 valores. Para poder representar valores negativos se utiliza la regla de complemento Twos. Por ejemplo, el rango de valores para un byte no se elige de 0 a 255, sino de -128 a 127. Para un valor binario de un byte (8 dígitos) la representación de valores es la siguiente: Representación binaria con 1 byte Como se puede ver, La representación de los valores negativos depende del número de bytes disponibles para el valor. Por ejemplo, con un byte el número 0b11111111 representa -1, pero con dos bytes representa 255. Con SpeQ puede especificar el número de bytes con los que desea trabajar con 1, 2 ó 4. Puede hacerlo en la ventana Configuración o Desde dentro de la área de trabajo mediante el ajuste de la variable del sistema bytes. También hay una opción para mostrar u ocultar ceros iniciales en números, como se describe en la página Ajustes. Por ejemplo, si Bytes1, hay 8 dígitos disponibles para números binarios. Con esta opción marcada, la respuesta de Bin (23) será 0b00010111 en lugar de 0b10111. Números hexadecimales Con la representación hexadecimal puede mostrar números de una manera mucho más corta que binaria. El sistema hexadecimal es base-16 y tiene los símbolos 0 1 2 3 4 5 6 7 8 9 A B C D E F donde el valor de A10, B11 C12, D13, E14 y F15. Cada cuatro dígitos en un número binario puede ser representado por un dígito hexadecimal. La conversión es muy fácil. Por ejemplo, los números hexadecimales se utilizan, por ejemplo, para representar colores de veinticuatro bits en archivos HTML en el formato RRGGBB. Aquí RR especifica el valor del componente rojo del color, GG el componente verde y BB el componente azul. Por ejemplo redFF0000, green008000 y blue0000FF. Para utilizar valores hexadecimales en SpeQ hay que añadir un prefijo 0x al valor, por ejemplo 0xD351. Octal El sistema numeral octal es base-8 y tiene los símbolos 0 1 2 3 4 5 6 7 Cada tres dígitos en un número binario puede ser representado por un dígito octal. Por ejemplo, para usar valores octales en SpeQ hay que añadir un prefijo 0o al valor, por ejemplo 0o111521. Ejemplos Véase tambiénHay varias maneras posibles de abordar esto dependiendo de cómo exactamente desea mantener / representar los valores hexadecimales individuales. Puede mantener cada valor en binaryx y crear su salida impresa (por ejemplo, 0010) cuando haya abordado el problema. Para crear también una variable que contenga el valor numérico correcto, puede generar el valor cambiando cada valor hexadecimal por una cantidad apropiada. Aquí está un acercamiento: Mire encima y déjeme saber si esto es lo que usted había previsto. Algunos compiladores (por lo general los de los microcontroladores) tiene una característica especial implementada en el reconocimiento de números binarios literales por el prefijo 0b. Antes de que el número, aunque la mayoría de los compiladores (C / C) no tienen tal característica y si es el caso, aquí es mi solución alternativa: Desventajas. (No son tan grandes) Los números binarios tienen que ser agrupados 4 por 4 Los literales binarios tienen que ser sólo números enteros sin signo Preprocesador total impulsado, no pasar el tiempo del procesador en operaciones sin sentido (como., Ltlt) al programa ejecutable (Se puede realizar cientos de veces en la aplicación final) Trabaja principalmente en compiladores C y C también (la solución templateenum funciona sólo en compiladores C) Tiene sólo la limitación de longitud para expresar valores constantes literales. Hubiera existido una limitación de la longevidad temprana (usualmente 8bits: 0-255) si se hubieran expresado valores constantes analizando la resolución de la solución de enum (usualmente 255 alcanzan el límite de definición de enum). Algunas otras soluciones exigen un número exagerado de definiciones constantes (demasiadas definen en mi opinión) incluyendo archivos de cabecera largos o varios (en la mayoría de los casos no fácilmente legibles y comprensibles, y hacen que el proyecto se convierta en Innecesariamente confundido y extendido, como el que utiliza BOOSTBINARY ()) Simplicidad de la solución: fácilmente legible, comprensible y ajustable para otros casos (podría extenderse para agrupar 8 por 8 también) respondió Sep 28 11 at 1:51 Como ya se respondió, No es posible escribir directamente números binarios. Sin embargo, una solución popular es incluir un archivo de encabezado con macros de ayuda. Una opción fácil también es generar un archivo que incluya definiciones de macro para todos los patrones de 8 bits, por ejemplo: Esto resulta en sólo 256 define s, y si son mayores que las constantes binarias de 8 bits, estas definiciones se pueden combinar con cambios y OR, posiblemente con macros auxiliares (por ejemplo BIN16 (B00000001, B00001010)). Por supuesto, la desventaja es que esta sintaxis requiere escribir todos los ceros a la izquierda, pero esto también puede hacerlo más claro para usos como la configuración de banderas de bits y el contenido de los registros de hardware. Para una función-como macro que resulta en una sintaxis sin esta propiedad, vea bithacks. h enlazado anteriormente. Por lo tanto, lo grande que un archivo que el CPP necesidad de leer si usted tenía todas las macros para un int largo. Ndash wilhelmtell 10 de abril de 2010 a las 2:03 wilhelmtell: ¿Y cuál es la relevancia de que cuando se especificó todos los patrones de 8 bits (256 líneas), y sugirió combinar mayores cantidades de los Incluso el BOOSTBINARY de la respuesta aceptada define todos los 8 bits Patrones en el encabezado ndash Arkku Apr 10 10 at 14:12 (Me parece un poco extraño que esta respuesta todavía está recibiendo downvotes dos años más tarde, sobre todo cuando mi primera sugerencia es incluir un encabezado de la biblioteca no fundamentalmente diferente de la de la Respuesta aceptada, y mi segunda sugerencia es generar 256 macros para 8-bit constantes, que es un número más pequeño de definir s que en la cabecera BOOSTBINARY) ndash Arkku Jun 29 12 at 15:15 La unidad más pequeña con la que puede trabajar es un Byte (que es de tipo char). Puede trabajar con bits aunque mediante operadores de bits. En cuanto a literales enteros, sólo puede trabajar con números decimales (base 10), octales (base 8) o hexadecimales (base 16). No hay literales binarios (base 2) en C ni C. Los números octales tienen el prefijo 0 y los números hexadecimales tienen el prefijo 0x. Los números decimales no tienen prefijo. En C0x usted será capaz de hacer lo que quiere por el camino a través de literales definidos por el usuario. Jerry: Gracias por señalar esos defectos. He actualizado el código para hacer frente a al menos algunos de esos problemas. Un defecto que todavía existe es algo como esto B (10). No estoy seguro de cómo lidiar con eso, ni estoy seguro de si C puede lidiar con ello. En cualquier caso, creo que uno tiene que tratar de hacer algo tonto ahora. Ndash Thomas Eding May 20 13 at 21:07 Su solución no es multi-plataforma. En muchas arquitecturas no puede incluir código de ensamblaje en C. Específicamente en Microsoft Visual Studio compilador puede (cuando se compila para x86 32bits). Pero ¿cómo saber si su procesador tiene 39eax39 registro Piense en procesadores ARM en teléfonos móviles, procesador x64, etc No tienen 39eax39. El tipo de un número binario es el mismo que cualquier número decimal, hexadecimal u octal: int (o incluso char, short, long long). Cuando se asigna una constante, no se puede asignar con 11011011 (curiosamente y desafortunadamente), pero puede utilizar hexadecimal. Hex es un poco más fácil de traducir mentalmente. Chunk in nibbles (4 bits) y traducir a un carácter en 0-9a-f.
No comments:
Post a Comment