Bits, binary, and bitwise operators · Bits, binaire et opérateurs bit à bit
Numbers are bits
- Inside the computer, every
intis a row of bits — each bit is a0or a1. - We usually read numbers in base 10, but the machine stores them in base 2 (binary).
- Bitwise operators let you look at and change individual bits.
Les nombres sont des bits
- À l'intérieur de l'ordinateur, chaque
intest une rangée de bits — chaque bit est un0ou un1. - Nous lisons généralement les nombres en base 10, mais la machine les stocke en base 2 (binaire).
- Les opérateurs bit à bit vous permettent d'examiner et de modifier des bits individuels.
Place value and powers of two
- In binary, each position is a power of two: 1, 2, 4, 8, 16, ...
- The byte
00010100is16 + 4 = 20. The rightmost bit is the 1s place. - An 8-bit byte can hold
0to255.
Valeur positionnelle et puissances de deux
- En binaire, chaque position est une puissance de deux : 1, 2, 4, 8, 16, ...
- L'octet
00010100est16 + 4 = 20. Le bit de poids faible correspond à la position des 1. - Un octet sur 8 bits peut contenir des valeurs de
0à255.
Reading a bit with >> and & 1
- The shift
n >> imoves the bits right byiplaces, so bitilands in the 1s place. - The mask
& 1keeps only that lowest bit, giving0or1. - So
(n >> i) & 1reads the value of bit numberi.
Lire un bit avec >> et & 1
- Le décalage
n >> idéplace les bits deipositions vers la droite, de sorte que le bitise retrouve dans la position des 1. - Le masque
& 1conserve uniquement ce bit de poids faible, donnant0ou1. - Ainsi,
(n >> i) & 1lit la valeur du bit numéroi.
The bitwise operators
&(and),|(or),^(xor),~(not) combine numbers bit by bit.<<and>>shift bits left or right. Shifting left by 1 doubles a number.- These are the tools for masks, flags, and low-level tricks.
Les opérateurs bit à bit
&(ET),|(OU),^(XOR),~(NON) combinent les nombres bit par bit.<<et>>décalent les bits vers la gauche ou vers la droite. Décaler vers la gauche de 1 double un nombre.- Ce sont les outils pour les masques, les drapeaux et les astuces de bas niveau.
#include <stdio.h>
int main(void) {
int n = 20;
for (int i = 7; i >= 0; i--) { // from the highest bit down
printf("%d", (n >> i) & 1);
}
printf("\n"); // 00010100
return 0;
}
Common mistakes
&is bitwise AND and&&is logical AND — do not confuse them.<< 1doubles a value;>> 1halves it.
Erreurs courantes
&est un ET bit à bit et&&est un ET logique — ne les confondez pas.<< 1double une valeur ;>> 1la divise par deux.
Now you try
- Use
(n >> i) & 1to read biti, and a loop to look at every bit. - For
count_bitsandget_bit, the parameter isunsigned int. Do not write amainfor those.
À vous maintenant
- Utilisez
(n >> i) & 1pour lire le biti, et une boucle pour examiner chaque bit. - Pour
count_bitsetget_bit, le paramètre estunsigned int. Ne écrivez pas demainpour ceux-ci.
Bitwise operators · Opérateurs bit à bit
& | ^ ~ << >> work on each bit of a byte independently. · & | ^ ~ << >> travaille sur chaque bit d'un octet indépendamment.
Complete int count_bits(unsigned int n) so it returns how many bits of n are 1. Use & 1 and · et >> in a loop. Do not · non write a main. · Complétez int count_bits(unsigned int n) pour qu'il retourne le nombre de bits de n qui sont 1. Utilisez & 1 et >> dans une boucle. Ne pas écrire de main.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Complete int get_bit(unsigned int n, int i) so it returns bit number i of n (0 or · ou 1). Use (n >> i) & 1. Do not · non write a main. · Complétez int get_bit(unsigned int n, int i) pour qu'il retourne le bit numéro i de n (0 ou 1). Utilisez (n >> i) & 1. Ne pas écrire de main.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
The byte n is given. In main, print its 8-bit binary form (most significant bit first), then a newline. For 20 that is 00010100. · Le byte n est fourni. Dans main, imprimez sa forme binaire sur 8 bits (bit de poids fort en premier), puis une nouvelle ligne. Pour 20 qui est 00010100.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.