Friday 24 November 2017

0b111 Binary Options


No estoy seguro de cómo obtener lo que quieres usando la lib estándar. Hay un puñado de scripts y paquetes por ahí que hará la conversión para usted. Sólo quería anotar el por qué. Y por qué no es cojo. Bin () no devuelve bits binarios. Convierte el número en una cadena binaria. El 0b principal le dice al intérprete que está tratando con un número binario. Según la definición del lenguaje python. De esta manera se puede trabajar directamente con números binarios, como esto no es cojo. eso es genial. Convierta un número entero en una cadena binaria. Los literales enteros y enteros largos se describen mediante las siguientes definiciones léxicas: Funciona mejor si proporciona una máscara. De esa manera se especifica hasta qué punto para firmar extender. O quizás más generalmente: en la teoría básica, la anchura real del número es una función del tamaño del almacenaje. Si es un número de 32 bits, entonces un número negativo tiene un 1 en el MSB de un conjunto de 32. Si es un valor de 64 bits, entonces hay 64 bits para mostrar. Pero en Python, la precisión entera se limita sólo a las restricciones de su hardware. En mi computadora, esto realmente funciona. Pero consume 9 GB de RAM sólo para almacenar el valor de x. Cualquier cosa más alta y tengo un MemoryError. Si tuviera más memoria RAM, podría almacenar números más grandes. Así que con eso en mente, lo que el número binario representa -1. Python es capaz de interpretar literalmente millones (e incluso miles de millones) de bits de precisión, como muestra el ejemplo anterior. En el complemento 2s, el bit de signo se extiende hasta la izquierda, pero en Python no hay número predefinido de bits, hay tantos como se necesite. Pero entonces usted se encuentra con la ambigüedad: el binario 1 representa 1. o -1. Bueno, podría ser cualquiera. 111 representa 7 o -1. Una vez más, podría ser cualquiera. Así que 111111111 representan 511. o -1. Bien, ambos, dependiendo de su precisión. Python necesita una manera de representar estos números en binario para que no haya ambigüedad de su significado. El prefijo 0b sólo dice que este número está en binario. Al igual que 0x significa que este número está en hexadecimal. Así que si digo 0b1111. Cómo puedo saber si el usuario quiere -1 o 15 Hay dos opciones: Opción A: El bit de signo Usted podría declarar que todos los números están firmados, y el bit de la izquierda es el bit de signo. Esto significa que 0b1 es -1, mientras que 0b01 es 1. Eso también significa que 0b111 es también -1, mientras que 0b0111 es 7. Al final, esto es probablemente más confuso que útil, particularmente porque la mayoría de la aritmética binaria va a ser sin signo de todos modos, Y las personas tienen más probabilidades de encontrar errores al marcar accidentalmente un número como negativo porque no incluyen un bit de signo explícito. Opción B: La indicación de signo Con esta opción, los números binarios están representados sin signo, y los números negativos tienen un prefijo -, igual que en decimal. Esto es (a) más coherente con decimal, (b) más compatible con la forma en que los valores binarios son más probable va a ser utilizado. Se pierde la capacidad de especificar un número negativo utilizando su representación de complemento de dos, pero recuerde que el complemento de dos es un detalle de implementación de almacenamiento, no una indicación adecuada del valor subyacente en sí. No debería ser algo que el usuario tiene que entender. Al final, la opción B tiene más sentido. Hay menos confusión y el usuario no está obligado a entender los detalles de almacenamiento. Antes de que usted puede responder a esta pregunta, usted tiene que entender las diversas codificaciones binarias que se habla. Los dos en cuestión son el complemento 2s y la magnitud de la señal. Cero y los números positivos se representan como probablemente se esperaría. Digamos que tenemos binario de 4 bits. 0000 es cero, 0001 es uno, 0010 es dos, etc. Cada posición de dígito vale el número de veces base el uno a su derecha. El derecho más vale uno. Por lo tanto, en binario, las posiciones de dígitos de derecha a izquierda valen 1, 2, 4 y 8. Para decodificar un número, se multiplica cada dígito por el valor de su posición de bit y se suman los resultados. Por ejemplo, 1010 sería 1x8 0x4 1x2 0x1 diez. Esto es exactamente cómo los números se escriben en otras bases, incluyendo decimal. El número decimal 1234 tiene el valor 1x1000 2x100 3x10 4x1. El problema es cómo representar números negativos. Al escribir en decimal, ponemos un signo negativo delante del número. Eso es prácticamente lo que la representación binaria signo-magnitud hace demasiado. Normalmente el bit alto está reservado como bit de signo, con 0 indicando cero o positivo y 1 indicando negativo. El resto de los bits tienen el mismo significado que antes. Por ejemplo, utilizando números de 4 bits de nuevo, 0101 es cinco (1x4 0x2 1x1). Para hacer negativo 5, simplemente establecer el bit de signo resultante en 1101. Así que en el formato de magnitud de signo de 4 bits, el número binario 1101 tiene el valor menos cinco. Lo anterior funciona bien y es muy parecido a lo que hacemos nosotros mismos con decimal, pero no es tan conveniente para implementar con puertas lógicas en una computadora. Hoy en día, el complemento 2s es prácticamente universal dentro de las computadoras. Los números cero y positivo se representan como antes. La diferencia es cómo se representan los números negativos. Una ventaja del complemento 2s es que nada especial necesita ser hecho para agregar números negativos versus números positivos. Piense en qué patrón de bits resultaría en 0000 después de agregar 1 a él. Si se sigue la regla de suma, entonces cualquier número que sea debe ser -1. Esperamos que sepas cómo añadir números binarios, y podemos ver que 1111 0001 resultados en 0000. En realidad resulta en 10000, pero ya que sólo se trata de números de 4 bits, el quinto bit que resulta de la adición se pierde y nos quedan Con los 4 bits bajos 0000. Hay solamente 16 valores posibles que un número binario de 4 pedacitos puede representar, y si está usando el esquema del complemento 2s ellos son: Tan quizá usted puede ver que la pregunta que usted hizo es ambigua. Es importante conocer el ancho del número binario que se está utilizando. Por ejemplo, si la pregunta está suponiendo números de 4 bits como mi ejemplo anterior, entonces 11 (asumida como 0011 con los ceros iniciales no mostrados) es tres. Lo mismo es cierto para un ancho de bit de 3 o más. Si es sólo 2 bits, entonces sólo hay 4 valores posibles que un número puede expresar. Esta es tu tarea, así que no voy a darte la respuesta. Una buena manera de proceder sería hacer una tabla de todos los posibles números binarios de 2 bits y sus equivalentes decimales como lo hice anteriormente, pero tanto para el complemento 2s como para la magnitud de signo. Si muestra al menos un intento razonable, podemos discutirlo más a fondo. Un número de signo de dos bits no puede representar -3 en complemento de dos o en magnitud de signo. Twos complemento tiene un valor negativo adicional (que no tiene aditivo inverso). La magnitud de la señal tiene dos ceros. Ahora veamos tu pregunta. Ningún patrón de bits distinto de cero puede tener valor negativo en una representación y un valor positivo en la otra. En ambas representaciones, el bit alto funciona como un signo negativo. Por lo tanto, las respuestas 2 y 4 no pueden ser respuestas correctas para cualquier patrón de bits. Además, ningún patrón de bits puede tener el mismo valor negativo en ambas representaciones. Un patrón de bits no puede ser -3 en complemento de dos y -3 en complemento de uno. Así que la respuesta 3 también es imposible. (Prueba: dos complementos -3, en cualquier ancho, termina en 01: 101, 1101, 11101. pero una magnitud de signo -3 debe terminar en 11: 111, 1011, 10011.) La única respuesta correcta posible para algún patrón de bits Es 1: Sin embargo, no es la respuesta correcta para el patrón de bits dado 11. La situación descrita en 1 es posible y se ajusta al patrón de bits 1111 bajo una aritmética de cuatro bits. Este número es -3 en la magnitud de cuatro signos de bit, y -1 en cuatro bits dos complementos. La pregunta debe tener un error tipográfico, o lo ha copiado mal. Si una guía de solución que está buscando da C como la solución para una pregunta de opción múltiple cuyas respuestas se indican numéricamente, es probable que esté mirando la guía de solución incorrecta. Sección incorrecta, capítulo incorrecto, libro de texto equivocado. Esto parece un error improbable. M La magnitud de signo utiliza el bit más significativo para denotar el signo. 0 es generalmente positivo, 1 negativo. Con un número de 2 bits como 0b11, el bit de signo lo hace negativo con sólo 2 valores posibles para la magnitud: 0 y 1. En este caso, sería -1. Pero esto no es una opción. Realmente creo que querían preguntar El número binario 0b111 representa. Esto tendría más sentido, ya que 0b111 sería negativo, con una magnitud de 3 para la forma de la magnitud del signo. O -3, que es una de las opciones. Twos complemento es un poco más complicado, pero no mucho. Twos complemento utiliza el bit de mayor orden para denotar la negatividad también. La magnitud de un número negativo se encuentra complementando el número (0b111 se convierte en 0b000, 0b101 se convertiría en 0b010) y la adición de 1. Esto suena tonto, pero hace la adición de números firmados muy simple, no requiere lógica adicional. La magnitud de un número positivo (con el bit más significativo 0) es simplemente el número. Así que el número es (Im asumiendo) 0b111, por lo que es negativo. Complementarlo y agregar uno rinde 0b000, luego 0b001, por lo que su negativo y su magnitud es 1, por lo que su -1. Asi que. A menos que esté completamente equivocado, y podría estar considerando que no he hecho esto a mano por un tiempo, la respuesta es (1), no (3) (o C) como usted sugirió. Pero como la pregunta que escribiste era obviamente incorrecta, todo podría estar equivocado. Sólo tengo que preguntar qué libro es esto. Respondió May 20 12 at 19:28 Usted está mezclando el concepto de números binarios con la forma muy específica en que están representados en el lenguaje C de la computadora. Si va a usar una convención de lenguaje específica que no tiene nada que ver con la pregunta, debería al menos indicarla claramente. Ndash Olin Lathrop May 20 12 at 19:46 UM está usando el prefijo 0b para denotar un número binario. AFAIK esto no es válido C (aunque es aceptado por algunos compiladores). Ndash Wouter van Ooijen 20 de mayo a las 20:49 Wouter: A pesar de que vino de C, pero el punto es que es específico de un lenguaje informático en particular, no las matemáticas en general, de la que trata esta pregunta. Por ejemplo, en Apollo Domain Pascal escribirías 2101 para el valor 5 en binario, pero no usaría eso para responder a una pregunta, a menos que fuera sobre ese lenguaje o definí la convención que estaba usando. Ndash Olin Lathrop 20 de mayo 12 a las 21:13 Bus de vista general: SPI (interfaz periférica serie). Conexiones: cuatro pines (MOSI / MISO / CLOCK / CS) y tierra. Tipo de salida: 3.3volt normal, o colector abierto (se requieren resistencias pull-up). Resistencias pull-up: necesarias para el modo de salida de drenaje abierto (2K 10K). Voltaje máximo: 5,5 voltios (5 voltios seguros). Última actualización de la documentación: v5.8. Opciones de configuración Velocidad - 30, 125, 250 kHz 1, 2, 2,6, 4, 8 MHz Polaridad del reloj - inactivo bajo, inactivo alto. Borde del reloj de salida - inactivo a activo, activo a inactivo. Punto en el que se cambian los datos en la línea SDO, esto no incluye el MSB (primer bit) que está listo inmediatamente después de que CS se active. Fase de entrada de la muestra: media, final. Tipo de salida - drenaje abierto / colector abierto (highHi-Z, lowground). Normal (high3.3volts, lowground). Utilice tipos de salida de drenaje abierto / colector abierto con resistencias pull-up para la interconexión multitensión. Sintaxis Cambia el pin auxiliar. Capital A fija AUX alto, pequeño a pone a tierra. Ajusta la entrada auxiliar (modo de alta impedancia) y lee el valor del pin. Mida el voltaje en el pin del ADC (sólo hardware v1). SPI Bus sniffer El Bus Pirate puede leer el tráfico en un bus SPI. El SPI sniffer se implementa en hardware y debe trabajar hasta 10MHz. Sigue los ajustes de configuración introducidos para el modo SPI. Las conexiones de los pines son las mismas que las del modo SPI normal. Conecte el reloj Bus Pirate al reloj del bus SPI que desea inhalar. Las clavijas de datos MOSI y MISO son ambas entradas, conectándolas a las líneas de datos del bus SPI. Conecte el pin CS al pin CS del bus SPI. / CS activar / desactivar 0xXX lectura MOSI (0xXX) MISO leer SPI CS pases de transición se representan por la sintaxis Bus Pirate normal. El byte olfateado en el pin MISO se muestra dentro (). SPIgt (0) 0.Macro menú 1.Sniff CS baja 2.Sniff todo el tráfico SPIgt (1) Sniffer Cualquier tecla para salir 0x30 (0x00) 0xff (0x12) 0xff (0x50) 0x40 (0x00) El SPI sniffer puede leer todo el tráfico , O filtrar por el estado del pin CS. El byte olfateado en el pin MOSI se muestra como un valor con formato HEX, el byte olfateado en el pin MISO está dentro de (). El sniffer utiliza un buffer de anillo de salida de 4096bytes. La salida del silenciador entra en el búfer del anillo y se empuja al PC cuando el UART está libre. Esto debería eliminar los problemas con bytes omitidos, independientemente de la velocidad UART o el modo de visualización. Un flujo de datos suficientemente largo acabará por superar el buffer, después de lo cual el LED MODE se apagará (v5.2). No se puede confiar en ningún dato si el LED MODE está apagado - esto se mejorará en un futuro firmware. El hardware SPI tiene un búfer de 4 bytes. Si se llena antes de que podamos transferir los datos a la memoria intermedia de anillo, entonces el terminal mostrará Cant seguir y volver al prompt SPI. Este error y el error del búfer de anillo se combinarán en una futura actualización. Cualquier comando ingresado después de la macro de sniffer se perderá. Los pines que normalmente son de salida se convierten en entradas en el modo de sniffer. MOSI, CLOCK, MISO y CS son todas las entradas en el modo SPI sniffer. Desde v5.3 el sniffer de SPI utiliza la selección de la viruta del hardware para el modo bajo del sniffer del CS. El tiempo mínimo entre CS caer y el primer reloj es 120ns teórico, y menos de 1.275us en las pruebas. El software de detección CS (CS sniffer modo alto) requiere entre 27usec y 50usec mínimo de retraso entre la transición de la línea CS y el inicio de los datos. Gracias a Peter Klammer por las pruebas y las actualizaciones. El sniffer sigue los ajustes de polaridad de salida y salida del reloj de salida del modo SPI, pero no la fase de la muestra de entrada. Macro de la polaridad del reloj / polaridad del reloj / macro de la muestra Las macros 10-15 cambian los ajustes del SPI sin deshabilitar el módulo SPI. No tengo idea si esto funcionará o si es permisible. Estas macros se agregaron a petición de los usuarios, pero nunca informaron si funcionaba. Más aquí. SPI (10) (11) (12) (13) (14) (15) SPI (spd ckp ske smp csl hiz) (3 0 1 0 1 1) SPI (spd ckp ske smp csl hiz) (3 1 1 0 (3 1 1 0 1 1) SPI (3 1 1 0 1 1) SPI (3 1 1 0 1 1) SPI (3 1 1 0 1 1) SPI (3 1 1 0 1 1) SPI (3 1 1 0 1 1) SPI 0 1 1) SPI (spd ckp ske smp csl hiz) (3 1 1 1 1 1) SPIgt Conexiones

No comments:

Post a Comment