Cómo establecer, clara y alternar un solo bit en lenguaje C?

Aquí, vamos a aprender cómo do se establece, clara y alternar un solo bit de un número en el lenguaje de programación C ?

Dado un número y tenemos que 1) establecer un bit, 2) borrar un poco y 3) un poco de palanca.

1) Establecer un poco

para establecer un bit particular de un número, podemos utilizar operador binario OR ( | ), que establece los bits – if el bit no está establecido, y if el bit es ya establecido, el estado del bit no cambia.

dejar suponer hay un num número y queremos establecer el X ésimo bit de la misma, a continuación, la siguiente declaración puede ser usado para fijar X ésimo bit de num

    num |= 1 << x;

2 ) Eliminación de un poco

Para borrar un poco particular de un número, podemos utilizar operador AND (y), se borra el bit – se establece if la broca, y if el bit ya se ha borrado, el estado del bit no cambia .

dejar suponer hay un num número y queremos borrar la X ésimo bit de la misma, a continuación, la siguiente declaración se puede utilizar para limpiar X ésimo bit de num

    num &= ~(1 << x);

3 ) alternar un poco

para alternar un poco particular de un número, podemos usar el operador XOR bit a bit (^), que alterna el bit – cambia el estado del bit if se establece el bit – será un-conjunto y if el bit es un-conjunto – que se establecerá.

dejar suponer hay un num número y queremos cambiar el X ésimo bit de la misma, a continuación, la siguiente declaración se puede utilizar para alternar X ésimo bit de num

    num ^= 1 << x;

Considere el siguiente código – en este caso, estamos llevando a cabo todas las operaciones antes mencionadas

#include <stdio.h>
int main(){
//declaring & initializing an 1 byte number

unsigned char num = 0xAA;
printf("num = %02Xn", num);
//setting 2nd bit
num |= (1<<2);
//now value will be: 1010 1110 = 0xAE (HEX) = 174 (DEC)
printf("num = %02Xn", num);
//clearing 3rd bit
num &= ~(1<<3);
//now value will be: 1010 0110 = 0xA6 (HEX) = 166 (DEC)
printf("num = %02Xn", num);
//toggling bit 4th bit
num ^= (1<<4);
//now value will be: 1011 0110 = 0xB6 (HEX) = 182 (DEC)
printf("num = %02Xn", num);
//toggling bit 5th bit
num ^= (1<<5);
//now value will be: 1001 0110 = 0x96 (HEX) = 150 (DEC)
printf("num = %02Xn", num);
return 0;
}

salida

num = AA
num = AE
num = A6
num = B6
num = 96

Leer más …

  • hexadecimal literales en lenguaje C
  • de trabajo con Los valores hexadecimales en lenguaje C
  • Cómo comprobar si un bit se pone o no en lenguaje C?
  • unsigned char en lenguaje C
  • bit a bit operador programa en C


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *