日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

负数在计算机中的二进制表示方法

發布時間:2024/3/26 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 负数在计算机中的二进制表示方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因為需要,補充一點『計算機原理』有關的知識。


首先需了解一下下面幾個概念:

  • 原碼:一個整數,按照絕對值大小轉換成的二進制數,稱為原碼。
  • 反碼:對于負數而言,將二進制數按位取反,所得的新二進制數稱為原二進制數的反碼。
  • 補碼:對于負數而言,反碼加1稱為補碼。

反碼和補碼都是對于負數而言的,正數的反碼、補碼和原碼是一樣的。下面舉一個例子:比如8位機中-3用二進制表示為00000011。那么,他的原碼、反碼、補碼分別為:
原碼:00000011
反碼:11111100
補碼:11111101


我們回到最開始的問題:負數在計算機中是如何表示的?有一個想法很容易就會被人想到:我用一個二進制位(比如二進制的最高位)專門表示符號(1表示負數,0表示整數),比如在8位機中-8的二進制表示為1 0001000,+8的二進制表示為0 0001000。但是隨手找一本『計算機原理』相關的書籍,它都會告訴你,計算機內部采用2的補碼(Two’s Complement)來表示負數。

那么為什么用2的補碼方式來表示負數呢?首先需要明確一點:計算機內部無論采用什么方式表示負數,其實都是無所謂的,只要能保持一一對應的關系即可。那么,既然任意選擇,那么理應選擇一種最為方便的方式。2的補碼就是最為方便的方式,其便利之處在于:所有的加法運算都可以使用同一種電路完成。我們不妨將『最高位記為符號位』方式稱作方式A,將『2的補碼』方式稱為方式B。下面用8位機中16+8和16+(-8)為例說明:


方式 A:16+8二進制加法:

00010000 +00001000 =00011000 // 24

方式 A:16+(-8)二進制加法:

00010000 +10001000 =10011000 // -24

如果『計算負數加法』采用的方法和『計算正數加法』的方法一樣的話,那么就會出錯。顯然需要兩種計算策略,從電路上說,就是必須要為加法運算做兩種電路。


方式 B:16+8二進制加法:

00010000 +00001000 =00011000 // 24

方式 B:16+(-8)二進制加法:

00010000 + 11111000 =100001000 // 8(第 9 位溢出舍棄)

顯然用『2的補碼』方式表示負數做一套電路就行了。

總結

以上是生活随笔為你收集整理的负数在计算机中的二进制表示方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。