Der Einwand mit dem Daumen-Runter-Zeichen (U+1F44E = 128078) zieht nicht, das 
liegt außerhalb des Bereichs 1..65535. Nur in dem kann man mit dem 
angekündigten Programm  (die dezimalen Ordnungsnummern) der UTF8-Zeichen 
mithilfe des 4096-Zahlensystems (=4KZS) mit (höchstens) 2 Byte codieren. Aber 
diese Behauptung ist nicht haltbar. 

Das 4KZS arbeitet (im günstigsten Fall) mit den ersten 4097 Unicode-Zeichen 
(ohne das NULL-Byte) als Ziffern, z.B.:

ziffern4096 = ''.join([ chr(x) for x in range(1,4097) ]) 

Die Zahlen des 4KZS sind nichts anderes als die dezimalen Ordnungszahlen ord(z) 
eines UTF8-Zeichens z, umgewandelt in Zahlzeichen des 4KZS. Das Programm macht 
also im Wesentlichen eine simple Basistransformation, wie die Python-Funktionen 
bin(), oct() oder hex(). Das 4KZS ist lediglich eine Erweiterung des 
Hexadezimalsystems auf die Basis 4096 mit 4096 Ziffern.

Gesucht: Anzahl der mit diesen Ziffern notierbaren Zahlzeichen, die höchstens 2 
Byte erfordern.

Lösung: Das UTF8-System besteht aus 1/2/3/4-Byte-Zeichen (Oktetten) aus den 4 
Bereichen A,B,C,D:
Bereich A: 1-Byte-Zeichen in range(0,2**7); Anzahl: 128 
Bereich B: 2-Byte-Zeichen in range(2**7, 2**11); Anzahl: 1.920 
Bereich C: 3-Byte-Zeichen in range(2**11, 2**16); Anzahl: 63.488 (minus 2.024 
surrogates) = 61.440
Bereich D: 4-Byte-Zeichen in range(2**16, 1114112); Anzahl: 1.048.575

Die gesuchten Zahlzeichen mit höchstens 2 Byte sind folglich ein- oder 
zweiziffrig. 
(a) 1-Byte-Zahlzeichen sind die UTF8-Zeichen aus dem Bereich A. Dies sind 127 
Stück.
(b) 2-Byte-Zahlzeichen gibt es einziffrig oder zweiziffrig. Die Einziffrigen 
bestehen aus einer Ziffer des Bereichs B. Davon gibt es 1920 Stück. Die 
zweiziffrigen bestehen aus Ziffernpaaren (X,Y) des Bereichs A. Davon gibt es 
127**2 = 16.129 Stück. Von diesen liegen jedoch nur 1920 im Intervall 1..65535.

Folglich beträgt die Anzahl der 4KZS Zahlzeichen mit höchstens 2 Byte 127 
+2*1920 = 3.967 Stück.
Das sind prozentual 3.967/63.487 = 6.25% der Zahlen im Intervall 1..65535, also 
gerade einmal ein Sechzehntel der fraglichen Zahlen.
Damit ist die Behauptung , ALLE Zahlzeichen in diesem Intervall ließen sich mit 
höchstens 2 Byte aus dem 4KZS darstellen, widerlegt.
_______________________________________________
python-de Mailingliste -- python-de@python.org
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an 
python-de-le...@python.org
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: arch...@mail-archive.com

Reply via email to