Quelle est la valeur des expressions suivantes ?
int val1 = 5;
int val2 = 6;
int val3 = 2;
a) val1 >> 1
b) val1 << 2
c) val1 | 0x7
d) 0x2 << val3
e) 0xC & 0x3
f) 0x2 | 0x3
g) 0x4 & 0x3
h) 0x4 | 0x3
Donner une expression qui met le bit #0 de la variable val
à 1
.
val est de type
int
Donner une expression qui met le bit #3 de la variable val
à 0
.
val est de type
int
Donner une expression qui vaut true
si le bit #2 de val
est 1
sinon elle retourne false
.
val est de type
int
Écrire une fonction qui force un bit à 1 d'une variable passée par référence.
Le numéro du bit est passé en paramètre.
Le prototype de la fonction est : void set_bit(int* value, int bit_num)
Donner une expression qui inverse le bit #0 de la variable val
.
Donner une expression qui inverse le bit #0 et le bit #2 de la variable val
.
Donner une expression qui force les bits #1 et #2 de la variable val
à 1
.
Donner une expression qui force les bit #2 et #3 de la variable val
à 0
.
Donner une expression qui retourne true
si les bit #1 et #3 de la variable val
sont à 1
sinon elle retourne false
.
a) val1 >> 1 = 2
b) val1 << 2 = 20
c) val1 | 0x7 = 7
d) 0x2 << val3 = 8
e) 0xC & 0x3 = 0
f) 0x2 | 0x3 = 3
g) 0x4 & 0x3 = 0
h) 0x4 | 0x3 = 7
val |= 0x1
val &= ~0x8
val & 0x4 == 0x4
void set_bit(int* val, int nbr){
*val = (*val) | (0x1 << nbr);
}
val ^= 1
val ^= 5
val |= 6
val &= ~12
// ou
val &= ~0xC
val & 0xA == 0xA