Bitwertigkeit

Die Bitwertigkeit legt den Stellenwert eines einzelnen Bits fest, den es durch seine Position innerhalb einer BinÀrzahl (auch Dualzahl genannt) haben soll. Sie beginnt mit und steigt je Position/Stelle um jeweils eine Zweierpotenz an.
Bei der Adressierung im Speicher werden die Bitwertigkeiten ĂŒber die Bitnummerierung definiert.
Im Rahmen der SignalĂŒbertragung legt die Bitreihenfolge die Wertigkeit jedes Bits fest.
UnabhÀngig hiervon ist die Byte-Reihenfolge und kommt erst bei Dualzahlen mit mehr als acht Bit (einem Byte) Wortbreite zu tragen.
Bitreihenfolge
[Bearbeiten | Quelltext bearbeiten]
Bei der hardwarenahen Programmierung von Mikroprozessoren und bei der seriellen DatenĂŒbertragung (bitweisen DatenĂŒbertragung) spielt die Reihenfolge der Bits eines Datenwortes eine entscheidende Rolle bezĂŒglich dessen Wertes. Sie beginnt entweder mit der niedrigsten oder höchsten Wertigkeit (englisch significance):
- LSb-first (Least Significant Bit first): Die Reihenfolge beginnt mit dem niedrigstwertigen Bit.
- MSb-first (Most Significant Bit first): Die Reihenfolge beginnt mit dem höchstwertigen Bit.
Notation und Nummerierung
[Bearbeiten | Quelltext bearbeiten]Bei der Notation einer Dualzahl als Reihung von 0 und 1 hingegen, werden typischerweise die Bit-Stellen gemÀà ihrer aufsteigenden Wertigkeit horizontal von rechts nach links aufgetragen. Somit steht die Ziffer mit der höchsten Wertigkeit am linken Ende der Reihe.
FĂŒr die Addressierbarkeit der Stellen zum Beispiel innerhalb eines 8-Bit-Registers bedient man sich allerdings der Nummerierung oder Indizierung der Bit-Stellen und auch sie kann entweder mit der niedrigsten oder höchsten Wertigkeit beginnen:
- Beginnt die Nummerierung mit 0 fĂŒr das niedrigstwertige Bit (LSb) auf der rechten Seite und lĂ€uft nach links, so spricht man von âLSb0â.
- Beginnt die Nummerierung mit 0 fĂŒr das höchstwertige Bit (MSb) auf der linken Seite und lĂ€uft nach rechts, so spricht man von âMSb0â.
LSb0-Bitnummerierung
[Bearbeiten | Quelltext bearbeiten]| 150dez in LSb0 | LSb | |||||||
| Bitnummer | 0 | |||||||
| Bitwertigkeit | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| Inhalt des Bit | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
Sind die Bits innerhalb einer BinĂ€rzahl gemÀàLSb0 nummeriert, dann hat das Bit mit dem niedrigsten Stellenwert (englisch least significant bit) die Nummer 0 (= ist das Bit mit dem Index 0).
Ist bei einer BinÀrzahl mit den Stellen die Bitposition 0 die niedrigstwertige, dann ist deren Wert mit zu multiplizieren. Der Gesamtwert der BinÀrzahl ist:
MSb0-Bitnummerierung
[Bearbeiten | Quelltext bearbeiten]| 150dez in MSb0 | LSb | |||||||
| Bitnummer | 7 | |||||||
| Bitwertigkeit | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| Inhalt des Bit | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
Sind die Bits innerhalb einer BinĂ€rzahl gemÀàMSb0 nummeriert, dann hat das Bit mit dem höchsten Stellenwert (englisch most significant bit) die Nummer 0 (= ist das Bit mit dem Index 0).
Ist bei einer BinÀrzahl mit den Positionen die Bitposition 0 die höchstwertige, dann ist deren Wert mit zu multiplizieren. Der Gesamtwert der BinÀrzahl ist:
Zahlenformat und Vorzeichenbit
[Bearbeiten | Quelltext bearbeiten]Das höchstwertige Bit (MSb) zeigt im Einerkomplement, Zweierkomplement und anderen Zahlenformaten mit Vorzeichenbit auch an, ob die entsprechende Dezimalzahl positiv oder negativ ist. Beim Zweierkomplement zĂ€hlt die Null dabei zu den nicht-negativen Zahlen, sodass man mehr negative als positive Zahlen darstellen kann. Bei anderen Zahlenformaten wie dem Einerkomplement oder Gleitkommazahlen nach IEEE-754-Standard gibt es zwei Darstellungen der Null (+0 und â0).
Adressierung von Bits
[Bearbeiten | Quelltext bearbeiten]Dieselben Annahmen wie im Artikel âByte-Reihenfolgeâ seien vorausgesetzt.
FĂŒr die meisten in der Praxis verwendeten Rechner besteht die kleinste adressierbare Einheit aus mehr als einem Bit, z. B. aus einem Byte, das 8 Bits enthĂ€lt. Mithin lĂ€sst sich ein einzelnes Bit nicht unmittelbar adressieren.
FĂŒgt man einer Byte-Adresse jedoch ein Bit-Offset BitOffset â 0,1, âŠ,7 bei, so wird ein einzelnes Bit eindeutig spezifizierbar. Diese Art der Spezifikation wird Bit-Adressierung genannt. Sie lĂ€sst sich ĂŒber den Umweg von Registerverschiebungen verwirklichen.
Die Begriffe links/rechts haben bei solchen Shift-Befehlen nichts mit links/rechts wie weiter oben beschrieben zu tun, sondern orientieren sich ausschlieĂlich an der ĂŒblichen Sicht:
- der Links-Shift multipliziert eine BinĂ€rzahl mit einer Zweierpotenz, verschiebt die Bits also in Richtung âBig-Endâ (= Richtung most significant bit)
- der Rechts-Shift umgekehrt.
In der Form  ByteAdresse * 8 + BitOffset  hat die Bit-Adressierung folgende Eigenschaften:
| Adress- Inkrement | Links -Shift | Rechts -Shift |
|---|---|---|
| Big-Endian | â1 | +1 |
| Little-Endian | +1 | â1 |
- Abgesehen von den Effekten an den beiden RÀndern des Registers, bedeutet eine Shift-Operation um 1 Bit eine VerÀnderung der Bit-Adresse um 1 (genauer: einen Transport der Bitkette an eine um 1 verÀnderte Bitadresse), und zwar entspricht (vgl. Tabelle):
- ein Links-Shift bei Big-Endian einer Verringerung um 1,
- ein Rechts-Shift bei Big-Endian einer Erhöhung um 1,
- ein Links-Shift bei Little-Endian einer Erhöhung um 1,
- ein Rechts-Shift bei Little-Endian einer Verringerung um 1.
- Unmittelbar erkennbar wird dies bei Shifts um Vielfache von 8 Bits: Eine Shift-Operation um 8 Bit ist dasselbe wie 8 Shift-Operationen um 1 Bit in immer die gleiche Richtung. Von den Randeffekten abgesehen bedeutet ein Shift um 8 Bit eine VerÀnderung der Byte-Adresse um 1 (Verringerung / Erhöhung wie oben bei einzelnen Bits).
Damit aber eine Shift-Operation um 8Â Bit nicht nur aus Randeffekten besteht, muss das Register breiter als 8Â Bit sein.
- Ergebnis
- Die Unterscheidbarkeit der Bits lĂ€sst sich abbilden auf eine eindeutige Adressierung (Nummerierung) derselben, bspw. in der exemplarischen Form  ByteAdresseâ*â8â+âBitOffsetâ. Der Zugriff auf ein einzelnes Bit gelingt (nach entsprechender Isolierung durch bitweise Operationen) unter Zuhilfenahme von Shift-Operationen. Rechts- wie Links-Shift fĂŒhren (auf ein und demselben Computer) beide zum exakt gleichen Ergebnis. Dabei wird die Endianness (Big oder Little) der Bytes im Wort auf eine der Bits im Byte ĂŒbertragen.
Die Shift-Operationen stellen unter dieser Adressierung Transporte von Bits dar um die im Shift angegebene Anzahl von Bit-Positionen.
Platziert man in der horizontalen Darstellung die niedrigen Adressen links und die hohen rechts, so lassen sich fĂŒr 32 Bit (d. h. 4 Byte) lange Bit-Arrays oder vorzeichenlose Ganzzahlen die Konventionen der Bit-Nummerierung folgendermaĂen gegenĂŒberstellen:
| Aufsteigende Offsets | Byte-Offset | 0 | 1 | 2 | 3 |
|---|---|---|---|---|---|
| Bit-Offset | 0, 1, âŠ, 7 | 0, 1, âŠ, 7 | 0, 1, âŠ, 7 | 0, 1, âŠ, 7 | |
| Bitnummer  bei Big-Endian und | MSb0 | 0, 1, âŠ, 7 | 08, âŠ, 15 | 16, âŠ, 23 | 24, âŠ, 31 |
| LSb0 | 31, âŠ, 24 | 23, âŠ, 16 | 15, âŠ, 08 | 7, âŠ, 1, 0 | |
| Bitnummer  bei Little-Endian und | LSb0 | 0, 1, âŠ, 7 | 08, âŠ, 15 | 16, âŠ, 23 | 24, âŠ, 31 |
| MSb0 | 31, âŠ, 24 | 23, âŠ, 16 | 15, âŠ, 08 | 7, âŠ, 1, 0 |
Die Nummerierung der Bits bei Big-Endian mit MSb0 und Little-Endian mit LSb0 (beide farblich unterlegt) entspricht somit der Bit-Adresse.
Dagegen nummerieren die Konventionen LSb0 bei Big-Endian und MSb0 bei Little-Endian die Bits im Register gegenlÀufig zu ihrer Adresse, was mit einer (mit den Adressen aufsteigenden) Indizierung in einem Array antikorreliert.