亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

與 1 的補碼二進制表示法混淆

與 1 的補碼二進制表示法混淆

慕的地8271018 2023-08-08 16:06:58
我試圖學習負數的二進制表示。我嘗試以二進制輸出 12 和 ~12。print(~12)輸出:-13這是 1 的 12 的補碼。但我的疑問是,二進制12是1100,-13(12的補碼)是0011,但3在二進制中也是0011。這讓我很困惑。-13 和 3 如何具有相同的二進制值?
查看完整描述

1 回答

?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

混淆是由于忽略顯式符號和填充/寬度而產生的。


Python 整數表現為無符號任意寬度二進制數,具有單獨的符號位。有符號數沒有通用的、明確的二進制表示形式。


例如,12 是數字...1100和符號+,-12 是相同的數字...1100但符號-。值得注意的是,...可以是任意多個前導數字 – 1100、等都是相同的數字。該0填充允許以同樣方式處理小數字和大數字,例如,至少4位數字12可以與至少5位數字16對齊。01100001100...1100...10000


這意味著不能有特定的前導符號位,因為每個位置之前都可以有另一個0。相反,符號位任意位于數字之前:0...1100or+...1100為 12,1...1100or-...1100為 -12。這在分隔符號和絕對值的數字的規范按位表示中可見。


>>> bin(12)

0b1100

>>> bin(-12)

-0b1100

因此,12 的 4 位按位補碼是-0011,而 3 是+0011。


查看完整回答
反對 回復 2023-08-08
  • 1 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號