反码、原码、补码的观点阐述
生活随笔
收集整理的這篇文章主要介紹了
反码、原码、补码的观点阐述
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我自己是不認可所謂的原碼、反碼的說法,但是很多人在計算負數的二進制時,都會使用反碼和原碼的概念,我這里就簡單梳理下吧。
十進制2的二進制數(按8位的二進制舉例)如下:
原碼:0000 0010
補碼:0000 0010
沒有反碼。有人說反碼也是0000 0010,簡直瞎扯!
十進制-2的二進制數如下:
原碼:1000 0010,最高位是符號位,0表示正數,1表示負數,所以-2的符號位是1
反碼:1111 1101,對原碼取反,但是符號位不動
補碼:1111 1110,反碼+1,就得到-2的補碼,實際計算機存儲的就是補碼,沒有什么反碼、原碼之類的。
總結:正數的原碼就是補碼,所以不需要取反+1,而負數的原碼不是補碼,所以需要取反+1得到補碼。而如果是負數的補碼則可以-1取反得到原碼,注意取反時符號位不動。
為什么我不認可這些概念?
因為二進制運算規則已經確定了,就是采用補碼規則,在規定的位數范圍內計算,而且計算機內保存的都是補碼,所以就沒有必要講什么原碼、反碼之類的東西了。只要記住二進制正數和負數的轉換計算規則即可,取反+1
所以我的觀點就是:
2的二進制數:0000 0010 ,這就是2的補碼,沒有所謂的”原碼“
-2的二進制數,就是2的二進制數取反+1,得到:1111 1110,這就是-2的補碼,沒有所謂的”原碼“、”反碼“。
總結
以上是生活随笔為你收集整理的反码、原码、补码的观点阐述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 复息什么意思是什么 什么是复息
- 下一篇: Java集合类梳理