bit_test Funktion

Gast #1391121
Lesenswert?
• ▲
▼
so vielleicht?
1
byte bit_test(byte b,byte n )
2
{
3
  if ( n > 7 ) return 0;
4
  return byte & (1<<n);
5
}
6

7

8

9
byte bit_set(byte b ,byte n )
10
{
11
  if ( n > 7 ) return byte;
12
  return byte | (1<<n);
13
}
Gast #1391176
Lesenswert?
• ▲
▼
Aus Kompatibilitätsgründen würd ichs immer so machen:

Bit setzen:   b |= (1<<n);
Bit löschen:  b &= ~(1<<n);
Bit abfragen: if ( b & (1<<n) )  {...}

Ist leicht lesbar und 100% kompatibel, da Standard-C. Also keine 
Bibliotheken nötig!
Gast #1391266
Lesenswert?
• ▲
▼
Nein.

Du solltest aber besser die " byte |= (1 << bit) " Schreibweise 
verwenden und nicht die Funktionen. Ein vernünftiger Compiler (gibts 
sowas für PIC12/16/18?) macht daraus eine einzelnen Assembler Anweisung. 
Die bit_xxx() Funktionen werden ja gerade deshalb vom Compiler 
bereitgestellt weil sie Probleme haben solche Situationen zu erkennen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.