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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

关于2的补码

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于2的补码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問一個基本的問題。

負數在計算機中如何表示?

舉例來說,+8在計算機中表示為二進制的1000,那么-8怎么表示呢?

很容易想到,可以將一個二進制位(bit)專門規定為符號位,它等于0時就表示正數,等于1時就表示負數。比如,在8位機中,規定每個字節的最高位為符號位。那么,+8就是00001000,而-8則是10001000。

但是,隨便找一本《計算機原理》,都會告訴你,實際上,計算機內部采用2的補碼(Two's Complement)表示負數。

什么是2的補碼?

它是一種數值的轉換方法,要分二步完成:

第一步,每一個二進制位都取相反值,0變成1,1變成0。比如,00001000的相反值就是11110111。

第二步,將上一步得到的值加1。11110111就變成11111000。

所以,00001000的2的補碼就是11111000。也就是說,-8在計算機(8位機)中就是用11111000表示。

不知道你怎么看,反正我覺得很奇怪,為什么要采用這么麻煩的方式表示負數,更直覺的方式難道不好嗎?

昨天,我在一本書里又看到了這個問題,然后就花了一點時間到網上找資料,現在總算徹底搞明白了。

2的補碼的好處

首先,要明確一點。計算機內部用什么方式表示負數,其實是無所謂的。只要能夠保持一一對應的關系,就可以用任意方式表示負數。所以,既然可以任意選擇,那么理應選擇一種最方便的方式。

2的補碼就是最方便的方式。它的便利體現在,所有的加法運算可以使用同一種電路完成。

還是以-8作為例子。

假定有兩種表示方法。一種是直覺表示法,即10001000;另一種是2的補碼表示法,即11111000。請問哪一種表示法在加法運算中更方便?

隨便寫一個計算式,16 + (-8) = ?

16的二進制表示是 00010000,所以用直覺表示法,加法就要寫成:

 00010000
+10001000
---------
 10011000

可以看到,如果按照正常的加法規則,就會得到10011000的結果,轉成十進制就是-24。顯然,這是錯誤的答案。也就是說,在這種情況下,正常的加法規則不適用于正數與負數的加法,因此必須制定兩套運算規則,一套用于正數加正數,還有一套用于正數加負數。從電路上說,就是必須為加法運算做兩種電路。

現在,再來看2的補碼表示法。

 00010000
+11111000
---------
100001000

可以看到,按照正常的加法規則,得到的結果是100001000。注意,這是一個9位的二進制數。我們已經假定這是一臺8位機,因此最高的第9位是一個溢出位,會被自動舍去。所以,結果就變成了00001000,轉成十進制正好是8,也就是16 + (-8) 的正確答案。這說明了,2的補碼表示法可以將加法運算規則,擴展到整個整數集,從而用一套電路就可以實現全部整數的加法。

2的補碼的本質

在回答2的補碼為什么能正確實現加法運算之前,我們先看看它的本質,也就是那兩個步驟的轉換方法是怎么來的。

要將正數轉成對應的負數,其實只要用0減去這個數就可以了。比如,-8其實就是0-8。

已知8的二進制是00001000,-8就可以用下面的式子求出:

 00000000
-00001000
---------

因為00000000(被減數)小于0000100(減數),所以不夠減。請回憶一下小學算術,如果被減數的某一位小于減數,我們怎么辦?很簡單,問上一位借1就可以了。

所以,0000000也問上一位借了1,也就是說,被減數其實是100000000,算式也就改寫成:

100000000
-00001000
---------
 11111000

進一步觀察,可以發現100000000 = 11111111 + 1,所以上面的式子可以拆成兩個:

 11111111
-00001000
---------
 11110111
+00000001
---------
 11111000

2的補碼的兩個轉換步驟就是這么來的。

為什么正數加法適用于2的補碼?

實際上,我們要證明的是,X-Y或X+(-Y)可以用X加上Y的2的補碼完成。

Y的2的補碼等于(11111111-Y)+1。所以,X加上Y的2的補碼,就等于:

X + (11111111-Y) + 1

我們假定這個算式的結果等于Z,即 Z = X + (11111111-Y) + 1

接下來,分成兩種情況討論。

第一種情況,如果X小于Y,那么Z是一個負數。這時,我們就對Z采用2的補碼的逆運算,求出它對應的正數絕對值,再在前面加上負號就行了。所以,

Z = -[11111111-(Z-1)] = -[11111111-(X + (11111111-Y) + 1-1)] = X - Y

第二種情況,如果X大于Y,這意味著Z肯定大于11111111,但是我們規定了這是8位機,最高的第9位是溢出位,必須被舍去,這相當于減去100000000。所以,

Z = Z - 100000000 = X + (11111111-Y) + 1 - 100000000 = X - Y

這就證明了,在正常的加法規則下,可以利用2的補碼得到正數與負數相加的正確結果。換言之,計算機只要部署加法電路和補碼電路,就可以完成所有整數的加法。

總結

以上是生活随笔為你收集整理的关于2的补码的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日本高清黄色电影 | 欧美在线播放 | 一二三毛片 | 亚洲免费观看高清 | 日韩中文字幕网 | 草草久久久无码国产专区 | 久久av无码精品人妻出轨 | 亚洲乱码日产精品bd在线观看 | 91在线观看网站 | 亚洲乱熟女一区二区三区小说 | 中文字幕18页 | 亚洲午夜精品久久久 | 亚洲免费观看高清完整版在线 | 亚洲色图 在线视频 | 久久久夜夜夜 | 日本羞羞网站 | 日本毛片在线观看 | 中文字幕激情小说 | 91人妻一区二区三区蜜臀 | 在线免费观看黄色小视频 | 悠悠色在线 | 国产视频999| 国产日韩欧美在线观看 | 国产又黄又猛又粗 | 天天操天天看 | 久久久久久不卡 | 第一页综合 | 日本少妇毛茸茸 | 五月天国产精品 | 精品久久久影院 | 久久黄色一级片 | 免费看污片的网站 | 日韩午夜av| 欧美色狠 | 欧美日韩精品亚洲精品 | 欧美性猛交aaaa片黑人 | 日韩成人在线看 | 丰满岳乱妇在线观看中字无码 | 欧美极度另类 | 99插插插 | 叼嘿视频在线免费观看 | 波多野结衣视频免费在线观看 | 日本成人久久 | 久久在线看 | 91亚洲免费 | 亚洲专区中文字幕 | 国产精品激情偷乱一区二区∴ | 天海翼中文字幕 | 精东传媒在线 | 成人在线免费看片 | 国产真人毛片 | 国产又色又爽无遮挡免费动态图 | 艳母日本动漫在线观看 | 色偷偷资源网 | 永久免费精品影视网站 | 日本黄xxxxxxxxx100 | 五月婷婷欧美 | 日本中文不卡 | 日本人妻丰满熟妇久久久久久 | 激情综合网激情 | 最新免费av网站 | 蜜臀少妇久久久久久久高潮 | 免费日韩在线视频 | 琪琪成人 | 给我免费观看片在线电影的 | 欧美浮力影院 | h亚洲| 色成人亚洲 | 日本人妻不卡一区二区三区中文字幕 | 成人午夜免费电影 | 美女被日网站 | 看成人片 | 久久久久免费看 | 黄色小说图片视频 | 韩国一区二区在线播放 | 一级做a爱片性色毛片 | 91欧美亚洲| 色国产精品| 日本在线播放 | 国产中文字幕视频 | 人妻毛片 | 成人精品一区二区三区视频 | 亚洲一区二区三区四区在线播放 | 精品日韩一区二区三区 | 久久久久久高清 | 久久免费网 | 久久乐国产精品 | 亚洲av午夜精品一区二区三区 | 日本三级韩国三级三级a级按摩 | 欧美在线影院 | 精品美女在线 | 奇米影视第四色首页 | 黄色短视频在线播放 | 中文字幕+乱码+中文乱码www | 国产成人8x视频一区二区 | 欧美色老头 | 男人和女人做爽爽视频 | 天天躁夜夜躁 | 波多野结衣三级视频 |