Forum: PC-Programmierung setzen_löschen_kippen von Bits


von Da Mo (Gast)


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
}

von Vlad T. (vlad_tepesch)


Lesenswert?

also nach meinem Empfinden:

setzen:  or
kippen:  xor
löschen: and mit binär negierter Maske

von Rolf M. (rmagnus)


Lesenswert?

Nach dem Setzen ist es 1. "Kippen" soll wohl die deutsche Übersetzung 
von "toggle" sein, heißt also, daß es invertiert wird.

von Fr N. (frn)


Lesenswert?

setzen |= Bitmaske
löschen &= ~Bitmaske
toggeln ^= Bitmaske

von Karl H. (kbuchegg)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.