Ich möchte ein Wort als eine Sequenz von 26 Bits darstellen. Wenn das 25. Bit gesetzt ist, bedeutet dies, dass der Buchstabe "y" in diesem Wort vorhanden ist.Darstellen eines Wortes als Folge von Bits
Zum Beispiel: Wort: "abekz" Darstellung: 10000000000000010000010011 Dies ist sehr einfach in C/C++ zu tun, da es einen 32-Bit-int-Typen hat. Aber Pythons Int hat eine unendliche Genauigkeit, deshalb kann ich es nicht machen.
Hier ist meine (Falsch) Lösung:
def representAsBits(string):
mask=0
for each_char in string:
bit_position= ord(each_char)-97 #string consists of only lower-case letters
mask= mask | (1<<bit_position)
return bin(mask)
print representAsBits("abze")# gives me 0b10000000000000000000010011
print representAsBits("wxcc")# gives me 0b110000000000000000000100 2 bits missing here
Welche Veränderungen kann ich machen? Vielen Dank!
Ihre Lösung ist richtig, die 2 "fehlenden Bits" sind nur die führenden '0's, also zeigt es Ihnen nicht. "a" ergibt "0b1". Wenn Sie das Ganze ausdrucken wollen, müssen Sie es mit den führenden Nullen auffüllen. – TemporalWolf
Ja, aber ich möchte, dass es automatisch gemacht wird, anstatt Nullen manuell zu patchen. Gibt es eine Möglichkeit, 32 Bit int in Python zu bekommen? – Sameer
Das int ist nicht, was das Problem ist, Sie wollen es auf eine bestimmte Weise ** anzeigen **. Diese Methode funktioniert und erzeugt richtige ganze Zahlen mit den entsprechenden gesetzten Bits. Die Bits werden nicht angezeigt, da sie führende Bits sind. '0b0000000001 == 0b1' ist' True', weil es die gleiche Nummer ist. – TemporalWolf