Zum Inhalt springen

Bitwertigkeit

aus Wikipedia, der freien EnzyklopÀdie
(Weitergeleitet von Least Significant Bit)
Das binÀre Zahlensystem mit seinen Wertigkeiten in einem ersten Entwurf von Gottfried Wilhelm Leibniz, 1697

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.

Standardzeichenstrukturierung und -reihung der asynchronen serielle DatenĂŒbertragung fĂŒr ein 7-Bit-ASCII-Zeichen bestehend aus 10 Elementen (Bit). Die Übertragung beginnt links mit dem Bit der niedrigsten Wertigkeit (nach SPACE), also Least-Significant-Bit-first (LSb-first).[1]

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 LSb0MSbLSb
Bitnummer70
Bitwertigkeit
128

64

32

16

8

4

2

1
Inhalt des Bit10010110

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 MSb0MSbLSb
Bitnummer07
Bitwertigkeit
128

64

32

16

8

4

2

1
Inhalt des Bit10010110

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-Offset0123
Bit-Offset0, 1, 
, 70, 1, 
, 70, 1, 
, 70, 1, 
, 7
Bitnummer
  bei Big-Endian und
MSb00, 1, 
, 708, 
, 1516, 
, 2324, 
, 31
LSb031, 
, 2423, 
, 1615, 
, 087, 
, 1, 0
Bitnummer
  bei Little-Endian und
LSb00, 1, 
, 708, 
, 1516, 
, 2324, 
, 31
MSb031, 
, 2423, 
, 1615, 
, 087, 
, 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.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ MIL-STD-188-100, S. B-8, Abb. 3, 1972.