Cómo cambiar los valores binarios en la programación c

El lenguaje de programación C cuenta con dos operadores binarios que realizan la operación equivalente de " Todo el mundo se mueve un paso hacia la izquierda (o derecha) ". los lt; lt; y >> operadores cambian los bits en el valor, que marcha a la izquierda o la derecha, respectivamente. Este es el formato para el lt; lt; operador:

v = int lt; lt; cuenta atrás

int es un valor entero. cuenta es el número de plazas desplazan los bits del valor de la izquierda. El resultado de esta operación se almacena en la variable v. Cualquier bits que se desplazan a la izquierda más allá de la anchura de la int variable X esta perdido. Nuevos bits desplazados desde la derecha son siempre 0.

Como con la mayoría sin sentido binario, que ayuda a ver visualmente lo que está pasando en un valor cuando se desplazan los bits.

TODOS salir de la piscina!

Char #include * Binbin (int n) -INT main () {int BDesplace, x-printf ("Escriba un valor entre 0 y 255:") -scanf ("% d", BDesplace) -para (x = 0- xlt; 8-x ++) {printf ("% s n", Binbin (BDesplace)) - BDesplace = BDesplace lt; lt; 1-} return (0) -} char * Binbin (int n) {bin static char [9] -INT x-for (x = 0-xlt; 8-x ++) {bin [x] = n 0x80? '1': '0'-n lt; lt; = 1-} bin [x] = ' 0' de retención (bin) -}

La operación de cambio tiene lugar en la línea 15 en todo el mundo fuera de la piscina !. El valor en la variable BDesplace se desplaza a la izquierda un bit.

Ejercicio 1: Escriba el código fuente de todo el mundo fuera de la piscina! en su editor y construir un nuevo proyecto.

El efecto neto de un desplazamiento de bits a la izquierda es duplicar un valor. Eso es verdad hasta cierto punto: Obviamente, cuanto más lejos queda usted cambia, algunos bits se pierden y el valor deja de doblar. Además, este truco sólo funciona para valores sin signo.

Ejercicio 2: Modificar el código fuente de todo el mundo fuera de la piscina! por lo que la función printf () en la línea 14 también muestra el valor decimal de la BDesplace variable. También debe modificar la función Binbin () para que muestre 16 dígitos en lugar de 8.

Aquí está la salida cuando se utiliza el valor 12:

Escriba un valor de 0 a 255: 120000000000001100 120000000000011000 240000000000110000 480000000001100000 960000000011000000 1920000000110000000 3840000001100000000 7680000011000000000 1,536

Pruebe el valor 800000000 (no escriba las comas) para ver cómo la regla de duplicación falla como los valores siguen desplazando hacia la izquierda. También vea la barra lateral en las inmediaciones " números binarios negativos ".

El operador >> cambio funciona de manera similar a la lt; lt; cambiar de operador, aunque los valores se marcharon a la derecha en vez de la izquierda. Cualquier parte que del marcharon el extremo derecho se descarta y sólo cero bits se inserta en el lado izquierdo. Este es el formato:

v = int >> cuenta atrás

int es un valor entero, y contar es el número de plazas para cambiar los bits a la derecha. El resultado se almacena en la variable v.

Ejercicio 3: Modificar el código fuente del Ejercicio 2 para que el operador de desplazamiento a la derecha se utiliza en lugar de la desviación a la izquierda en la línea 15. Construir el programa.

Aquí está el resultado cuando se utiliza el valor de 128:

Escriba un valor de 0 a 255: 1280000000010000000 1280000000001000000 640000000000100000 320000000000010000 160000000000001000 80000000000000100 40000000000000010 20000000000000001 1

ni idea lt; lt; operador, el >> está garantizada para cortar siempre el valor por la mitad cuando usted cambia un dígito a la derecha. De hecho, el operador >> es mucho más rápido para usar en un valor entero que la (división) de operador / dividir un valor por 2.

los lt; lt; y >> operadores están disponibles sólo en el lenguaje C. En C ++, los operadores similares se utilizan para recibir la entrada estándar y enviar la salida estándar.

Los números binarios son siempre positivos, teniendo en cuenta que los valores de un bit puede ser sólo 1 o 0 y no -1 y 0. Entonces, ¿cómo hace el equipo enteros con signo? Fácil: Se engaña.

El bit más a la izquierda en un valor binario con signo es conocido como el bit de signo. Cuando ese bit se establece (igual a 1), el valor es negativo para un int firmado. De lo contrario, el valor se lee como positivo.

imagen0.jpg

En este ejemplo, el bit de signo se establece para un char firmado. Los valores expresados ​​son negativos, que está en el rango de una variable de tipo char firmado.

image1.jpg

En este ejemplo, el bit de signo es ignorado porque el valor es un unsigned char. Los valores sólo pueden ser positivos, por lo que el rango positivo para una variable sin signo es mayor que para una variable firmado.




» » » » Cómo cambiar los valores binarios en la programación c