負的二進制數
2007/1/11 10:27:29

二進制算術需要理解的另一個方面是負數。前面一直假定所有的數字都是正的。從樂觀的角度來看是這樣,所以我們目前已對二進制數有了一半的認識。但在實際中還會遇到負數,從悲觀的角度來看,我們對二進制數的認識僅僅是一半。在計算機中,是如何表示負數的?我們只能按照自己的意愿來處理二進制數字,所以解決方案必須是使用其中的一個二進制數字。
對于允許是負數的數值(稱為帶符號的數值),必須先確定一個固定的長度(換言之,就是二進制數字的位數),再把最左邊的二進制數字設置為符號位。必須固定位數,這樣才能避免符號位與其他位的混淆。
因為計算機的內存由8位字節組成,所以二進制數字要存儲在多個8位中(通常是2的幕),即有些數字是8位,有些數字是16位等。只要知道每個數值的位數,就可以找到符號位,它應是最左邊的那一位。如果符號位是0,該數值就是正的,如果它是1,該數值就是負的。
似乎這就解決了問題,但實際上并非如此。當兩個整數相加時,計算機不應不檢查兩個數字是否為負。我們希望使用常規的“加”來生成相應的結果。如果把–8加到+12上,答案就應是+4。
如果用簡化的解決方案來執行這一操作,也就是把正數的符號位設置為1,使它變成負數,再執行算術運算,并進行常規的進位,答案就是錯誤的:
12轉換為二進制: 0000 1100
–8轉換為二進制: 1000 1000
如果把它們加起來,結果是 1001 0100。
答案是-20,這可不是我們希望的結果+4,它的二進制應是0000 0100。此時讀者會認為,“沒有把符號作為另一個位”。但是,在用計算機進行計算時,這是必須要考慮的。因為計算機是啞巴,它們處理這種情況會出問題。我們需要用另一種方式來表示負數。
下面看看計算機如何表示–8,即從+4中減去+12,得到正確的結果:
+4轉換為二進制: 0000 0100
+12轉換為二進制: 0000 1100
從前者中減去后者,結果是 1111 1000。
對于右邊的4位數字,必須借1,才能進行減法,這正是我們在執行十進制算術時所進行的操作。結果就是–8,即使它看起來不是–8,但其值的確是–8。再用二進制把該值與+12或+15相加,就會得到正確的結果。
在從4中減去12時,究竟進行了什么操作?實際上是對負二進制數值采用了2的補碼形式。這里需要做一個約定,以避免解釋它為什么有效。下面看看如何從正數中構建負數的2的補碼形式,讀者也可以自己證明這是有效的。現在回到前面的例子,給-8構建2的補碼形式。首先把+8轉換為二進制:
0000 1000
現在反轉每個二進制數字,即把0變成1,把1變成0:
1111 0111
這稱為1的補碼形式,如果給這個數加上1,就得到了2的補碼形式:
1111 1000
這就是從+4中減去+12,得到的–8的二進制表示。為了確保正確,下面對–8和+12進行正常的相加操作:
+12轉換為二進制 0000 1100
–8轉換為二進制 1111 1000
把這兩個數加在一起,得到: 0000 0100
答案就是4。這是正確的。左邊所有的1都向前進位,這樣該位的數字就是0。最左邊的數字應進位到第9位,即第9位應是1,但這里不必擔心這個第9位,因為在前面計算-8時從前面借了一位,在此正好抵消。實際上,這里做了一個假定,符號位1或0永遠放在最左邊。讀者可以自己試驗幾個例子,就會發現這種方法總是有效的。最妙的是,這使計算機上的算術計算非常簡單快速。

返回列表
返回首頁 主站蜘蛛池模板: 国产精品永久免费视频| 老公和他朋友一块上我可以吗| 嫩草影院在线播放www免费观看 | 久久6这里只有精品| 无码国内精品人妻少妇蜜桃视频| 亚洲中文字幕久久精品无码喷水| 色吧首页dvd| 在线看欧美三级中文经典| 中文字幕一区二区三区精华液| 日韩在线看片免费人成视频播放| 免费欧洲美女牲交视频| 色费女人18毛片a级毛片视频| 国内揄拍国内精品| 一区二区在线免费视频| 无翼乌全彩我被闺蜜男口工全彩| 亚洲AV午夜精品一区二区三区| 欧美线在线精品观看视频| 国产三级久久精品三级| 精品一区二区视频在线观看| 国产精品林美惠子在线播放| AV无码久久久久不卡蜜桃| 强制邻居侵犯456在线观看| 久久99精品久久久久久hb无码 | 国产不卡视频在线观看| 国产一区在线mmai| 国产精品久久免费视频 | 人人妻人人澡人人爽人人dvd| 黄色毛片在线播放| 国产精品宅男在线观看| 97av麻豆蜜桃一区二区| 天堂а√中文最新版地址| 一区二区三区欧美视频| 成人免费视频一区| 中文字幕黄色片| 日本三人交xxx69| 久久午夜免费鲁丝片| 欧美色欧美亚洲高清在线视频| 偷看农村妇女牲交| 香蕉免费一区二区三区| 国产日韩精品在线| JIZZJIZZ亚洲日本少妇|