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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

有符号二进制数--补码

發布時間:2025/4/5 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 有符号二进制数--补码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

link

1.計算機內,有符號數的3種表示方法:原碼,反碼,補碼。

?

1)最高位為符號位,“0”為正,“1”為負,其余位為數值大小。

?

2)反碼:正數??? 反碼? = 原碼;

??????????????????????? 負數??? 反碼? = {符號位不變}{數值位按位取反}

?

下面重點說一下補碼!

?

2.整數的補碼:

?

1)正數的補碼 = 原碼;

?

2)負數的補碼 = {原碼符號位不變} {數值位按位取反+1}

?

???????????? or = {原碼符號位不變} {數值位從右邊數第一個1及其右邊的0保持不變,左邊按位取反}

?

3)舉例:以十進制數+99-99為例:(符號位0為正數,1為負數)

?

?????????? +99?原碼 = 0110_0011 b

?????????? +99?補碼 = 0110_0011 b

?

??????????? -99?原碼 = 1110_0011 b

??????????? -99?補碼 = 1001_1101 b

?

注意:(a0的補碼只有一個:

??????????????????????

????????????????????? +0 原碼 = 0000_0000 b,-0 原碼 = 1000_0000 b

????????????????????? +0 反碼 = 0000_0000 b,-0 反碼 = 1111_1111 b

????????????????????? +0 補碼 = 0000_0000 b,-0 補碼 = 0000_0000 b? -- 相同,均為0000_0000 b

?????????

?????????????? b8位二進制數的表示范圍:

????????????????????????????

???????????????????????? 8位原碼:??????????? -127 d -- +127 d

???????????????????? 1111_1111 b --? 0111_1111 b?

??

???????????????????????? 8位反碼:??????????? -127 d -- +127 d

???????????????????? 1000_0000 b --? 0111_1111 b

?

???????????????????????? 8位補碼:??????????? -128 d -- +127 d

???????????????????? 1000_0000 b --? 0111_1111 b

?

??

?

3.純小數的原碼:小數點前一位為符號位,若為正,則后面數值位不變;

??????????????????????????????????????????????????????????????????????????????????若為負,則后面數值位取反加1

????????????????????????????????

???? 例子:0.9239 d 原碼 = 0.1110_1100_1000_0100

???????????????????????????????????補碼 = 0.1110_1100_1000_0100

?

???????????????? -0.9239 d 原碼 = 1.1110_1100_1000_0100

???????????????????????????????????補碼 = 1.0001_0011_0111_1100

?

4.一般在硬件語言中使用二進制補碼時,是不可能帶有小數點的,而且一個數通常有正數和小數兩部分,這種情況下最好的方法是先將該數轉換為正數,再進行轉換會。

?

例子:??? -87.36????原碼 = 1101_0111 . 0101_1100_0010_1000

?

求其補碼,計算過程如下:

?

先用 -87.36 * 2^16 = -5725224 d = 1101_0111_0101_1100_0010_1000 b

此時再取反加1,則補碼 = ?1010_1000_1010_0011_1101_1000 b,

最后再除2^16,恢復小數點的位置即可。

?

?

?

?

總結

以上是生活随笔為你收集整理的有符号二进制数--补码的全部內容,希望文章能夠幫你解決所遇到的問題。

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