2¹⁶-1 & 2⁵ = 2⁵ (oder? Offensichtlich?)
Ein Entwickler hat mich heute gefragt, was bitweise 65535 & 32 ist, dh 2¹⁶-1 & 2⁵ =? Ich dachte zuerst spontan 32, aber es schien zu einfach, woraufhin ich einige Minuten nachdachte und dann 32 antwortete. 32 scheint die richtige Antwort gewesen zu sein, aber wie? 65535 = 2¹⁶-1 = 1111111111111111 (aber es scheint nicht richtig zu sein, da diese Binärzahl alle -1 (?) Sein sollte), 32 = 100000, aber ich konnte das in meinem Kopf nicht konvertieren, woraufhin ich ohnehin 32 antwortete, seit ich hatte etwas beantworten. Ist die Antwort 32 tatsächlich trivial? Ist in gleicher Weise 2¹⁶-1 & 2⁵-1 = 31? Warum hat mich der Entwickler nach genau 65535 gefragt?
Binär, was ich bewerten sollte, war 1111111111111111 & 100000, aber ich verstehe nicht, warum 1111111111111111 nicht -1 ist. Sollte es nicht -1 sein? Ist 65535 eine Zahl, die einen Überlauf verursacht, und woher weiß ich das?
Antworten:
Die Zahl wird in diesem Fall als vorzeichenlose Ganzzahl behandelt, was bedeutet, dass nicht alle gesetzten Bits -1 ergeben (wenn sie vorzeichenbehaftet wären, wären Sie korrekt). Alle 16 gesetzten Bits ergeben also 65535.
Interessanterweise spielt der vorzeichenbehaftete Zustand bei logischen Bitoperationen keine Rolle. Bits sind selbst nicht signiert, da sie die niedrigste Komponente in einem Computer sind. Es wird durch die CPU-Operation angegeben, wenn die Bits in ex. Ein Register wird signiert oder nicht signiert behandelt.
Negative Zahlen werden erzeugt, indem das höchstwertige Bit (MSB) auf wahr gesetzt wird, wenn die Zahl als vorzeichenbehaftet behandelt wird (welche "Seite" oder welches äußere Bit gesetzt wird, hängt von der CPU-Architektur ab, dh Big-Endian / Little-Endian ).
quelle
Es ist trivial. 65535 in binär ist alles eins, also erhalten Sie X, wenn Sie es mit einem X kleiner als 65535 UND verknüpfen.
quelle
Beantwortung des zweiten Teils Ihrer Frage. Sie haben es als 32-Bit markiert, also ist 65535 in 32 Bit
00000000000000001111111111111111
signiert oder nicht signiert, es ist nicht -1.quelle