Hur får man fram en bit ur en bit enkelt i ANSI C?
Det borde finnas något smidigare sätt än:
RB0=(byte>>4)&0x01; // För att ge bit0 på PortB, värdet av bit4 i variabel byte.
Kan man inte typ skriva RB0=byte,4
Kör Hi-Tech Pic C.
Bit av en byte
-
- Inlägg: 520
- Blev medlem: 31 maj 2003, 10:42:37
- Ort: Helsingborg
true/false finns inte i C. Det finns 0 och skilt från 0. Så det enda man bestämt kan säga om "Resultat" i ditt exempel är att den kommer få ett värde som inte är noll. Däremot är sannolikheten stor att den kommer bli 1 men det är egentligen helt odefinierat. En optimerande kompilator borde se till att ta bort jämförelsen "&& 1" eftersom den egentligen inte förändrar resultatet.
Det enda sättet som jag ser det är egentligen att använda en struct med bitfields för varibeln "byte" så att man kan bit-adressera i variabeln. För att hitta ett enklare eller effektivare uttryck för att göra operationen finns nog inte.
Det enda sättet som jag ser det är egentligen att använda en struct med bitfields för varibeln "byte" så att man kan bit-adressera i variabeln. För att hitta ett enklare eller effektivare uttryck för att göra operationen finns nog inte.