Ich habe folgendes C-Programm geschrieben (setzen_kippen_löschen von Bits). Kann mir bitte jemand den Unterschied von setzen und kippen erklären. setzen (EXOR) 110 101 011 kippen(OR) 110 101 111 Richtig?
1 | // setzen_loeschen_kippen
|
2 | |
3 | #include<stdio.h> |
4 | |
5 | unsigned char setzen_loeschen_kippen(unsigned char, int, int); |
6 | |
7 | int main(void) |
8 | {
|
9 | unsigned char data; |
10 | int position; |
11 | int operation; // ??? |
12 | unsigned char fw; |
13 | |
14 | printf("Welchen HEX-Wert (8 Bit) wollen Sie bearbeiten: 0x"); |
15 | scanf("%X", &data); |
16 | printf("Der eingegebene Wert lautet: 0x%X\n\n", data); |
17 | |
18 | printf("Welche Position wollen Sie bearbeiten (z.B: Bit 3): "); |
19 | scanf("%i", &position); |
20 | printf("Die ausgewaehlte Position lautet: %i\n\n", position); |
21 | |
22 | printf("Welche Operation wollen Sie ausfuehren (1:setzen -1:loeschen 0:kippen)"); |
23 | scanf("%i", &operation); |
24 | printf("Die ausgewauhlte Operation lautet: %i\n\n", operation); |
25 | |
26 | fw = setzen_loeschen_kippen(data, position, operation); |
27 | |
28 | printf("Der bearbeitete Wert lautet: 0x%02X\n\n", fw); |
29 | |
30 | system("pause"); |
31 | return 0; |
32 | }
|
33 | |
34 | unsigned char setzen_loeschen_kippen(unsigned char data, int position, int operation) |
35 | {
|
36 | switch(operation) |
37 | {
|
38 | case 1: data = data ^ (1 << position); |
39 | break; |
40 | |
41 | case -1: data = data & ~ (1 << position); |
42 | break; |
43 | |
44 | case 0: data = data | (1 << position); |
45 | break; |
46 | |
47 | }
|
48 | |
49 | return data; |
50 | }
|