0x für 8 Bit, was wird für 7 Bit verwendet?

970
Cool Javelin

Ich schreibe technische Dokumentation und beschreibe ein Format für den I2c 7-Bit-Adressierungsmodus. Dies hängt auch mit der ASCII-7-Bit-Codierung zusammen, dies ist jedoch eine Randnotiz.

I2c verwendet 7 Bits (oder 10 Bits, die hier nicht erläutert werden), um ein Slave-Gerät zu adressieren. Nach der 7-Bit-Adresse folgt ein weiteres Bit, das den Slave zum Lesen oder Schreiben auffordert.

Beim Senden einer Adresse werden acht Bits übertragen, in Wirklichkeit sind es jedoch 7 Bits plus ein Richtungsbit (R / w #).

Meine Frage: Wenn 0x verwendet wird, um eine Basis 16 (hexadezimal, 8-Bit-Byte) zu beschreiben, was wird verwendet, um eine Basis 15 zu beschreiben (uh quindecimal?) 7-Bit-Byte? Vielleicht ist das Wort Byte auch hier falsch.

Ich weiß, dass 0x auch verwendet wird, um 16-Bit-Wörter zu beschreiben, aber logischerweise sind sie wirklich zwei 8-Bit-Bytes zusammen, also fühlt sich 0x in Ordnung.

Hinweis: Ich habe das Wort quindecimal von http://mathforum.org/library/drmath/view/60405.html erhalten

Kennzeichen.

-4
Bits sind binär. 0x ist hex, was * nicht * binär ist. Es ist einfach schön, weil es eine Zweierpotenz ist. Daniel B vor 7 Jahren 1
Oh ja, und eine einzelne Hexadezimalzahl entspricht 4 Bits und nicht 8 Bits. Ich verstehe also absolut nicht, was Sie erreichen wollen. Daniel B vor 7 Jahren 0
Sie verwechseln die Anzahl der Bits mit der Basislinie. * "Ich schreibe technische Dokumentation ..." * - Dann müssen Sie die richtige Interpunktion für * "7-Bit-Codierung" * verwenden. Es ist nicht "7-Kodierung" oder "Bit-Kodierung", sondern "7-Bit-Kodierung" (dh "7" und "Bit" gehören zusammen, also wird es mit Bindestrich gesetzt). sawdust vor 7 Jahren 2
Sie sollten die hexadezimale Schreibweise verwenden und es sollte klar sein, dass die Werte 7-Bit-Kodierung sind, um das Lesen Ihrer Dokumentation zu erleichtern. Hexadezimal existiert für uns Menschen, ein Computer kümmert sich nicht. Der Computer speichert den Wert in einem Register mit einer bestimmten Größe, auch wenn die zu speichernde 7-Bit-Datenstruktur nur 7-Bit speichert Ramhound vor 7 Jahren 0

2 Antworten auf die Frage

2
David Schwartz

Sie haben es nicht ganz richtig. Wir 0xgeben Zahlen an, die in Hexadezimalzahl, Basis 16, ausgedrückt sind. Es ist vollkommen in Ordnung, 0xZahlen vor jeder beliebigen Länge zu verwenden, solange Sie sie in Basis 16 ausdrücken.

Wenn Sie "0x1" sehen, ist es so, als ob Sie 1 sehen. Es könnte sich um ein einzelnes Bit handeln. Es könnte ein Byte sein. Es kann beliebig lang sein. "0x" impliziert keine bestimmte Länge.

2
Tonny

Base15 bedeutet nicht 7-Bit-Byte. Die Konzepte haben keinerlei Beziehung ...

Ein 7-Bit-Byte ist genau das. Ein Byte, in dem das höchstwertige Bit nicht verwendet wird.
Die Verwendung der hexadezimalen Notation mit 0x-Präfix ist nicht falsch, um Werte anzuzeigen, die in solchen 7-Bit-Bytes gespeichert sind, sofern Sie klarstellen, dass nur 7 Bits gültig sind. (Mit anderen Worten: 0x0 * bis 0x7 *, die 0x8 * und höhere Zahlen werden nicht verwendet.)

Meines Wissens gibt es dafür keine besondere Schreibweise.
Ich programmiere seit mehr als 30 Jahren und damals waren diese 7-Bit-Systeme weitaus häufiger als heute. Wenn es dafür eine spezielle Notation gäbe, wäre ich irgendwann darauf gestoßen, aber ich habe es nie getan.