Wie viel Bit hat die 0 bzw. 1?

8 Antworten

Die 0/1 lassen sich tatsächlich in einem Bit unterbringen. Dafür gibt es allerdings eine Vorraussetzung: Du definierst, dass der komplette Text nur aus Nullen und Einsen besteht.

Wieviele Bits pro Zeichen benutzt werden hängt aber von der Kodierung ab. Da gibt es viele kreative Möglichkeiten sowas zu tun. Zum Beispiel kannst du sagen: Dein Text besteht nur aus 0,1,A und B. Dann kann man definieren, dass 0->0, 1->1, 2->A und 3->B ist - du brauchst nur 2 Bit pro Zeichen.
Willst du den kompletten ASCII Code abdecken brauchst du 8 Bit pro Zeichen.
Bei Unicode wären es 8*x Bit pro Zeichen.

Unicode ist hier eine interessante Idee. Als simplifiziertes Beispiel: Du hast einen Text, der fast nur aus 1en und 0en besteht, aber es sind auch einzelne ASCII Zeichen dabei. Dann könnte man definieren: Jedes Zeichen hat ein einzelnes Bit vorangestellt: Wenn es 0 ist, kommt danach ein Bit und es ist Binär, wenn es 1 ist, kommen danach 8 Bit für den ASCII Code. Nachteil: Jedes Zeichen ist ein Bit länger, als es sein sollte, Vorteil: Wenn 0/1 oft vorkommt, kann man im Endeffekt Platz sparen. So funktioniert im groben auch Unicode, genau gesagt UTF-8 (die ersten 127 Zeichen sind immer 8-Bit lang, danach können es mehrere Bytes Werden).

Andersherum kann man von einem existierendem Text schauen, welche Zeichen besonders oft verwendet werden und diese aus entsprechend wenige Bits reduzieren, wenn ein Zeichen nur 5-mal in 30.000 Zeichen verwendet wird, ist es auch nciht so schlimm, wenn dieses Zeichen 10-Bit braucht. Ein klassische Beispiel hierfür ist die Huffmann-Kodierung, die im ZIP-Algorithmus einen wichtigen Anteil spielt. Deswegen lassen sich auch Texte so gut Zippen, weil die Entropie (Informationsgehalt, im ASCII sind viele Kontrollsignale und sonderzeichen, die nie benutzt werden, du brauchst für einem durchschnittlichen Text keine 8-Bit pro Zeichen) dort realtiv gering ist.

Das kommt drauf an, von welchem Alphabet sie Element sind und wie groß das gesamte Alphabet ist.

Mit Alphabet mein ich nicht die Buchstaben {ABCDE...} sondern dieses:

http://de.wikipedia.org/wiki/Alphabet_%28Informatik%29

Sind deine 0 und Deine 1 Elemente der Menge {0...255}, braucht man ebenso wie alle anderen Zeichen zur Codierung 8 bit.

Sind deine 0 und Deine 1 Elemente des Unicode-Zeichensatz, braucht man ebenso wie alle anderen Zeichen zur Codierung 16 (oder 24 oder 32) bit.

Sind deine 0 und Deine 1 Elemente des ASCII-Zeichensatz, brauchen sie eigentlich nur 7 Bit - es wird aber der besseren "Verwertbarkeit" mit Computern 8 bit verwendet.

Sind deine 0 und Deine 1 Elemente der Menge {0,1} und somit die einzigen Elemente braucht man zur Codierung nur 1 bit.

Deine Frage wurde schon zur Genüge beantwortet, aber ich möchte noch einen kleinen Denkfehler korrigieren:

Ein normaler Buchstabe benötigt ja 8 Bit ...

Das hängt genau genommen vom Zeichensatz und vom Buchstaben ab. :)

Im ASCII-Zeichensatz belegt ein Lateinischer Kleinbuchstabe 7 Bit, im EBDIC-Zeichensatz 8 Bit und bei UTF-16 bzw. UTF-32 ganze 16 bzw. 32 Bit.

Und wenn du z.B. kyrillische Buchstaben in UTF-8 kodierst, nehmen diese keine 8 Bit, sondern 16 Bit ein.

Japanische Zeichen (auch wenn es genau genommen keine Buchstaben sind) nehmen mit UTF-8 Kodierung 24 Bit ein, aber benötigen mit Shift-JIS oder EUC-JP nur 16 Bit, mit ISO-2022-JP hingegen gigantische 56 Bit - wenn es sich um ein einzelnes Zeichen handelt; ansonsten 16 Bit.

Aber wie gesagt, selbst ein kleines 'a' schwankt stark zwischen 7 und 32 Bit, je nach Kodierung. :)


TeeTier  30.05.2015, 20:29

PS: Anfangs verwende ich "Zeichensatz" synonym für "Zeichenkodierung", was eigentlich falsch ist. Zeichen, Zeichensatz und Zeichenkodierung sind unterschiedliche Dinge. Sorry, wegen der missverständlichen Ausdrucksweise!

0

Es gibt verschiedene text typen: z.b. ein text ( in jedem editor oder word) oder eine zahl( wenn man z.b. im handy nur eine zahl eingeben kann) oder auch boolean( wahrheitswert) dieser kann nur 0 oder 1 annehmen. ( z.b. bei den einstellungen: einstellung aktiviert) dieser dateityp braucht 1 bit. Aber wenn du in einem zahlenfeld 0 eingibst braucht das mehrere bit, da der pc mit einer zahl rechnet also er hält sich dafür bereits platz frei:z.b. viele eingabefelder sind integer: d.h. es können maximal bis zu ca. 2000000 gehen. Dannach startet der pc dann wieder bei ca. -2000000. Es gibt auch andere zahlenwerte aber das ist jetzt egal. Hoffe ich konnte dir helfen

Das ist genauso wie im Dezimalsystem: Du kannst schreiben 1, 01, oder auch 00001. Der Wert ist immer gleich. Die Stellen hängen davon ab, wie weit man damit zählen will. Der Tacho bei meinem Auto zeigte 000001 an, als es neu war, mein Zahlenschloss am Koffer 001. Die eigentliche Frage wäre dann: Wieviele Stellen benötige ich zur Darstellung meiner größten Zahl.

Im Binärsystem benötige ich für die Darstellung einer Stelle 1 Bit, für jede Zweierpotenz eine Stelle. Mit einer Stelle bzw. Bit kann ich bis 1 zählen, mit 2 Bits bis 3, mit 3 Bits bis 7.

Um die Frage genau zu beantworten:

Für 0 und 1 brauche ich 1 Bit.

Für 00 und 01 bauche ich 2 Bits.

Für 00000 und 00001 brauche ich 5 Bits.

Das ist z.B. auch der Unterschied zwischen einer 32- und einer 64-Bit-Adressierung. Die binäre 1 kann man bei beiden gleichermaßen darstellen. Der Adressraum bei einem 64-Bit Rechner ist um das Quadradfache (nicht das Doppelte) größer.

Die Zahlen 0 und 1 in Deiner Frage haben keine Bits, sie benötigen aber zur Darstellung ein Bit. Voraussetzung dazu ist, das geht auch aus Deiner Frage hervor, dass hierbei die 1 größte Zahl ist.