2020-10-27(补码10000000为什么可以表示-128?)
文章目錄
- 一、引言
- 二、正文
- 練習:
一、引言
本文轉自知乎上 fhylhl 用戶對于此同名問題的解答,本人覺得回答得非常鞭辟入里,因此咨詢了作者是否可以轉載,得到了肯定的回復后才進行了轉載。
另外,什么是補碼?補碼的設計意義是什么?
讓我們忘記公式,來看看作者的回答。
二、正文
很多人并不理解補碼。補碼就是同余啊。1000000是正128你知道吧,正負128模256是同余的。加減乘可以直接算也是同余的定理決定的,而不是湊出來的巧合,哪可能湊出這種東西?
8位只能表示256個數,0到255,但我還想表示一些負數怎么辦呢?就用與該負數同余的正數來表示唄。-1=255,-2=254,等等。
建議脫離算數的思維方式,這其實就是一個環。模任何一個正整數(如256),可以把所有整數分類,比如模256可分256類,0 256 -256…是一類(余0類),1 257 -255…是一類(余1類),等等,這256類可看作環的元素,你看-128和128是同一個類里的(余128類),用一個代表另一個罷了。補碼和普通的unsigned integers都是在每類中選一個數,unsigned integers選0到255,補碼表示的有符號整數選-128到127,都是一個數恰好對應一個類。
當你明白這一切后,補碼就是順理成章的事。
練習:
設計用8位二進制數表示13至268這256個數的方案。要求作加減乘運算的時候,可以直接把編碼當正整數算,能得到正確結果。
總結
以上是生活随笔為你收集整理的2020-10-27(补码10000000为什么可以表示-128?)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020-10-27(汇编小收获)
- 下一篇: 2020-10-27(原码,反码,补码的