Ben ~2
0b01
veya 0b101
olması gerektiğini düşündüm python3: ~ 2 = -0b11?
>>> print(2, bin(2), ~2, bin(~2))
> 2 0b10 -3 -0b11
python3
aşağıdaki çalıştırın.Neden -0b11
?
Ben ~2
0b01
veya 0b101
olması gerektiğini düşündüm python3: ~ 2 = -0b11?
>>> print(2, bin(2), ~2, bin(~2))
> 2 0b10 -3 -0b11
python3
aşağıdaki çalıştırın.Neden -0b11
?
2 = 00000010
~2 = 11111101
İkili tamamlayıcıda 11111101
değeri nedir? MSB
11111101 > 00000010 > 00000011
^ ^
Flip Add 1
göre işareti belirleyin
Bunu cevaplamak için, bu basit algoritmayı izleyin
En önemli bitin "1" olduğunu unutmayın. işareti negatif.
İlk raporuna bakın ~ 2:
2 = 0b0000...10 (n leading 0s)
~2 = 0b1111...01 (n leading 1s)
Ardından analiz -0b11
ikiye tümleme notasyonu kullanılarak çoğu bilgisayar sayısı gösterimi:
:A - B = A + ~B + 1
Yani -0b11 acturally olduğunu
- 0b11
= 0 - 0b11
= 0b0000...00 + 0b1111...00 + 1
= 0b1111...01
'0x111 ... 01' hakkında,' 0b111 ... 01' demek istiyor musunuz? – Xin
@Xin güzel yakalama –