setzen_löschen_kippen von Bits

Gast #2464699
Lesenswert?

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
}
#2464812
Lesenswert?

> Kann mir bitte jemand den Unterschied von setzen und
> kippen erklären.

Wie beim Lichtschalter

Wenn du jemanden bittest das Licht einzuschalten, dann ist das Ergebnis 
unter umständen anders als wenn du ihn bittest, den Lichtschalter zu 
betätigen.

Einschalten: Danach brennt das Licht auf jeden Fall
Nur Betätigen (kippen): Hängt davon ab. Wenn das Licht vorher schon
   brannte, dann ist es danach aus. War das Licht aber vorher aus,
   dann ist es danach an.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren