Guten Tag liebe Community.
Folgendes Problem : Ich muss verschiedene Bits von "value = 2034"
ausgeben.
Also das höchste, das niedrigste Bit und Bits 3 und 4. Ich habe
folgender C-Code:
1 | #include<stdio.h>
|
2 | #include<stdlib.h>
|
3 |
|
4 | int main(void) {
|
5 |
|
6 | int value = 2034; // 0111 1111 0010
|
7 | int c0 = 0;
|
8 | int c1 = 0;
|
9 | int c2 = 0;
|
10 | int c3 = 0;
|
11 |
|
12 | printf("\nValue: %d\n",value);
|
13 |
|
14 |
|
15 | c0 = (value &= (1<<11)); // hoechstes Bit
|
16 | c1 = (value &= (1<<0)); // niedrichstes Bit
|
17 | c2 = (value &= (1<<3)); // Bit 3
|
18 | c3 = (value &= (1<<4)); // Bit 4
|
19 |
|
20 |
|
21 | printf("\nc0 = %d\n",c0);
|
22 | printf("\nc1 = %d\n",c1);
|
23 | printf("\nc2 = %d\n",c2);
|
24 | printf("\nc3 = %d\n",c3);
|
25 | }
|
Ich weiß dass es sich um Bitsverschiebung handelt. Als output erwarte
ich :
1 | c0 = 0
|
2 | c1 = 0
|
3 | c2 = 0
|
4 | c3 = 16
|
Aber da "value" in Zeile 15 übershrieben wird bekomme ich:
1 | c0 = 0
|
2 | c1 = 0
|
3 | c2 = 0
|
4 | c3 = 0.
|
Könnte mir bitte hier weiterhelfen?