Führen Sie die folgenden in python3python3: ~ 2 = -0b11?
>>> print(2, bin(2), ~2, bin(~2))
> 2 0b10 -3 -0b11
Ich dachte ~2
0b01
oder 0b101
sein sollte.
Warum -0b11
?
Führen Sie die folgenden in python3python3: ~ 2 = -0b11?
>>> print(2, bin(2), ~2, bin(~2))
> 2 0b10 -3 -0b11
Ich dachte ~2
0b01
oder 0b101
sein sollte.
Warum -0b11
?
2 = 00000010
~2 = 11111101
Was ist der Wert 11111101
im Zweierkomplement?
Um das zu beantworten, folgen Sie diesem einfachen Algorithmus:
11111101 > 00000010 > 00000011
^ ^
Flip Add 1
Beachten Sie, dass das höchstwertige Bit "1" ist, also das Zeichen ist negativ.
Erste lookat ~ 2:
2 = 0b0000...10 (n leading 0s)
~2 = 0b1111...01 (n leading 1s)
Analyse Dann -0b11
die meisten Computer-Zahlendarstellung der Zweierkomplementnotation verwendet, wobei gilt:
A - B = A + ~B + 1
So -0b11 acturally ist:
- 0b11
= 0 - 0b11
= 0b0000...00 + 0b1111...00 + 1
= 0b1111...01
über '0x111 ... 01', meinst du' 0b111 ... 01'? – Xin
@Xin schöner Fang –