關於二進位制負數的補碼,二進位制負數的補碼的原理為什麼要用補碼的形式改更負

時間 2021-09-10 01:13:06

1樓:胖大熙

求負整數的補碼,將其原碼除符號位外的所有位取反(0變1,1變0,符號位為1不變)後加1。

同一個數字在不同的補碼錶示形式中是不同的。比如-15的補碼,在8位二進位制中是11110001,然而在16位二進位制補碼錶示中,就是1111111111110001。以下都使用8位2進位制來表示。

例子:求-5的補碼,過程如下:-5對應正數5(00000101)→所有位取反(11111010)→加1(11111011),所以-5的補碼是11111011。

數0的補碼錶示是唯一的。

[+0]補=[+0]反=[+0]原=00000000;[ -0]補=11111111+1=00000000。

2樓:匿名使用者

二進位制中:

(1)負數的補碼=反碼+1

(2)正數的原碼、反碼、補碼都是其本身。

比如:八位機器碼中,+1和-1的原碼、反碼、補碼的表示如下+1:0 00000001,0 00000001,0 00000001。

-1:1 00000001,1 11111110,1 11111111. (符號位用空格隔開以示區別)

3樓:沙裡波特

[y]補=2+y 這個是什麼意思?

這是負小數的補碼

他們回答的,都不對。

他們回答的,都是整數的。

都是一本正經的,裝a什麼c

4樓:康秦瑀

求二進位制負數的補碼的方法是:先求正數的補碼,之後取反加一即可;而正數不變,正數的原碼反碼補碼是一樣的.

計算機只能識別0和1,使用的是二進位制,而在日常生活中人們使用的是十進位制,"正如亞里士多德早

就指出的那樣,今天十進位制的廣泛採用,只不過是我們絕大多數人生來具有10個手指頭這個解剖學事實的結果。儘管在歷史上手指計數(5,10進位制)的實踐要

比二或三進位制計數出現的晚。".為了能方便的與二進位制轉換,就使用了十六進位制(2

4)和八進位制1.數值有正負之分,計算機就用一個數的最高位存放符號(0為正,1為負).這就是機器數的原碼了

5樓:李宜寬

負數的補碼是負數,求補碼時,符號位(即第一位)是不改變的。

根據[-y]補=-[y]補,好像也推不出來啊, 反正[-y]補=-[y]補,這個很好理解的,。。。,是不是看錯了~~

二進位制負數的補碼的原理為什麼要用補碼的形式改更負

6樓:匿名使用者

1、在計算機系統中,數值一律用補碼來表示(儲存).

主要原因:使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理.另外,兩個用補

碼錶示的數相加時,如果最高位(符號位)有進位,則進位被捨棄.

2、補碼與原碼的轉換過程幾乎是相同的.

數值的補碼錶示也分兩種情況:

(1)正數的補碼:與原碼相同.

例如,+9的補碼是00001001.

(2)負數的補碼:符號位為1,其餘位為該數絕對值的原碼按位取反;然後整個數加1.

例如,-7的補碼:因為是負數,則符號位為「1」,整個為10000111;其餘7位為-7的絕對值+7的原碼

0000111按位取反為1111000;再加1,所以-7的補碼是11111001.

7樓:沙裡波特

正確答案,可見:網頁連結。

二進位制負數的補碼

8樓:做而論道

計算機裡面,只有加法器,沒有減法器,所有的減法運算,都必須用加法進行。

即:減去某個數字(或者說加上某個負數)的運算,都應該研究如何用加法來完成。

模、補數

在日常生活當中,可以看到很多這樣的事情:

把某物體左轉 90 度,和右轉 270 度,在不考慮圈數的條件下,最終的效果是相同的;

把分針倒撥 20 分鐘,和正撥 40 分鐘,在不考慮時針的條件下,效果也是相同的;

把數字 87,減去 25,和加上 75,在不考慮百位數的條件下,效果也是相同的;

……。上述幾組數字,有這樣的關係:

90 + 270 = 360

20 + 40 = 60

25 + 75 = 100

式中的 360、60 和 100,就是「模」。

式中的 90 和 270、20 和 40,以及 25 和 75,就是一對對「互補」的數字。

知道了「模」,求某個數字的「補數」,就是輕而易舉的了:

如果模為 365,數字 120 的補數為:365 - 120 = 245。

用補數代替原數,可把減法轉變為加法。出現的進位就是模,此時的進位,就應該忽略不計。

二進位制數的模

前面說過的十進位制數 25 和 75,它們是 2 位數的運算,模是 100,即 1 的後面加上 2 個 0。

如果有 3 位數參加運算,模就是 1000,即 1 的後面加上 3 個 0。

這裡的 1000,是十進位制數的一千,可以寫成 10^3,即 10 的 3 次方。

推論:有多少位數參加運算,模就是在 1 的後面加上多少個 0。

對於二進位制數字,模也是這樣推算。

如果是 3 位二進位制數參加運算,模就是 1000,即 1 的後面加上 3 個 0;

那麼當 8 位二進位制數參加運算,模就是 1 0000 0000,即 1 的後面加上 8 個 0。

16 位二進位制數參加運算,模可就大了,是 1 的後面加上 16 個 0。

注意:這裡提到的 1、0,都是二進位制數。

8 位二進位制數的模可以按照十進位制寫成 2^8,即 256。

16 位數二進位制數的模,就是 2^16,按照十進位制,它就是 65536。

二進位制數的補碼

求二進位制數的補數,目的是往計算機裡面存放。

在計算機裡面,存放的數字什麼的,都稱為機器碼;那麼二進位制形式的補數,也就改稱為補碼了。

一般情況下,都是以 8 位二進位制數來討論補碼,少數也有用 16 位數的。

計算時加上正數,是不需要進行求取補數的;只有進行減法(或者加上負數),才需要對減數求補數。

補碼就是按照這個要求來定義的:正數不變,負數即用模減去絕對值。

已知一個數 x,其 8 位字長的補碼定義為:

/ x 0 <= x <= +127 ;正數和0的補碼,就是該數字本身

[x]補 = |

\ 2^8 -|x| -128 <= x < 0 ;負數的補碼,就是用 1 0000 0000,減去該數字的絕對值

例如 x = -126,其補碼為 1000 0010,計算方法如下:

1 0000 0000

- 0111 1110

-----------

1000 0010

可以看出,按照補碼的定義來求補碼,概念十分清晰,方法、步驟也是十分簡單的。

9樓:功誠蹉燕

求二進位制負數的補碼的方法是:先求正數的補碼,之後取反加一即可;而

專正數不變,正數的原碼屬

反碼補碼是一樣的.

計算機只能識別0和1,使用的是二進位制,而在日常生活中人們使用的是十進位制,"正如亞里士多德早

就指出的那樣,今天十進位制的廣泛採用,只不過是我們絕大多數人生來具有10個手指頭這個解剖學事實的結果。儘管在歷史上手指計數(5,10進位制)的實踐要

比二或三進位制計數出現的晚。".為了能方便的與二進位制轉換,就使用了十六進位制(2

4)和八進位制1.數值有正負之分,計算機就用一個數的最高位存放符號(0為正,1為負).這就是機器數的原碼了

10樓:淚盈點心

1、在計算機系統中

抄,數值襲一律用補碼來表示(儲存)。

主要原因:使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理。另外,兩個用補

碼錶示的數相加時,如果最高位(符號位)有進位,則進位被捨棄。

2、補碼與原碼的轉換過程幾乎是相同的。

數值的補碼錶示也分兩種情況:

(1)正數的補碼:與原碼相同。

例如,+9的補碼是00001001。

(2)負數的補碼:符號位為1,其餘位為該數絕對值的原碼按位取反;然後整個數加1。

例如,-7的補碼:因為是負數,則符號位為「1」,整個為10000111;其餘7位為-7的絕對值+7的原碼

0000111按位取反為1111000;再加1,所以-7的補碼是11111001。

11樓:燕實酆昭

二進位制抄中:

(1)負數的補碼=反碼+1

(2)正數的原碼、反碼、補碼都是其本身。

比如:八位機器碼中,+1和-1的原碼、反碼、補碼的表示如下+1:0

00000001,0

00000001,0

00000001。

-1:1

00000001,1

11111110,1

11111111.

(符號位用空格隔開以示區別)

12樓:沙裡波特

這個問題,不用討論計算機怎樣怎樣...。

人,就是這樣算的。

一個小孩,很小的,只會數內 100 個數。

能做加容法,還不會做減法。

那麼,減一,你就可以教他:加 99。

比如:26 - 1 = 25

26 + 99 = (1) 25

對這個小孩來說,結果,不是一樣嗎?

99,就是-1 的補數。

由此,就能推出,計算機用的補碼:

255,就是-1 的補碼;

254,就是-2 的補碼;

... ... 。

二進位制的負數都是補碼?

13樓:碧血玉葉花

1、在來計算機系統中源,數值一律用補碼來表示(儲存).

主要原因:使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理.另外,兩個用補

碼錶示的數相加時,如果最高位(符號位)有進位,則進位被捨棄.

2、補碼與原碼的轉換過程幾乎是相同的.

數值的補碼錶示也分兩種情況:

(1)正數的補碼:與原碼相同.

例如,+9的補碼是00001001.

(2)負數的補碼:符號位為1,其餘位為該數絕對值的原碼按位取反;然後整個數加1.

例如,-7的補碼:因為是負數,則符號位為「1」,整個為10000111;其餘7位為-7的絕對值+7的原碼

0000111按位取反為1111000;再加1,所以-7的補碼是11111001.

二進位制補碼怎麼計算的

14樓:guxuecan劍

1、正數的補碼錶示:

正數的補碼 = 原碼

負數的補碼 = +    or

= +

以十進位制整數+97和-97為例:

+97原碼 = 0110_0001b

+97補碼 = 0110_0001b

-97原碼  = 1110_0001b

-97補碼  = 1001_1111b

2、純小數的原碼:

純小數的原碼如何得到呢?方法有很多,在這裡提供一種較為便於筆算的方法。

以0.64為例,通過查閱可知其原碼為0.1010_0011_1101_0111b。

操作方法:

將0.64 * 2^n 得到x,其中n為預保留的小數點後位數(即認為n為小數之後的小數不重要),x為乘法結果的整數部分。

此處將n取16,得

x = 41943d = 1010_0011_1101_0111b

即0.64的二進位制表示在左移了16位後為1010_0011_1101_0111b,因此可以認為0.64d = 0.1010_0011_1101_0111b 與查詢結果一致。

再實驗n取12,得

x = 2621d = 1010_0011_1101b 即 0.64d = 0.1010_0011_1101b,在忽略12位小數之後的位數情況下,計算結果相同。

3、純小數的補碼:

純小數的補碼遵循的規則是:在得到小數的原始碼後,小數點前1位表示符號,從最低(右)位起,找到第一個「1」照寫,之後「見1寫0,見0寫1」。

以-0.64為例,其原碼為1.1010_0011_1101_0111b

則補碼為:1.0101_1100_0010_1001b

當然在硬體語言如verilog中二進位制表示時不可能帶有小數點(事實上不知道**可以帶小數點)。

4、一般帶小數的補碼

一般來說這種情況下先轉為整數運算比較方便

-97.64為例,經查詢其原碼為1110_0001.1010_0011_1101_0111b

筆算過程:

-97.64 * 2^16 = -6398935 = 1110_0001_1010_0011_1101_0111b,其中小數點在右數第16位,與查詢結果一致。

則其補碼為1001_1110_0101_1100_0010_1001b,在此採用 負數的補碼 = +  方法

5、補碼得到原碼:

方法:符號位不動,幅度值取反+1 or符號位不動,幅度值-1取反

-97.64補碼 = 1001_1110(.)0101_1100_0010_1001b

取反      = 1110_0001(.)1010_0011_1101_0110b

+1         = 1110_0001(.)1010_0011_1101_0111b 與查詢結果一致

6、補碼的拓展:

在運算時必要時要對二進位制補碼進行數位拓展,此時應將符號位向前拓展。

-5補碼 = 4'b1011 = 6'b11_1011

ps.原碼的拓展是將符號位提到最前面,然後在拓展位上部0.

-5原碼 = 4『b』1101 = 6'b10_0101,對其求補碼得6'b11_1011,與上文一致。

二進位制負數補碼轉為十進位制

沙裡波特 59 原碼是 1011 1011。59 補碼是 1100 0101 二進位制 197 十進位制 59 補碼是 1100 0101 二進位制 c5 16進位制 59 補碼是 1100 0101 二進位制 305 八進位制 這是用八位補碼錶示的,最高位表示為符號位,0代表是正數,1代表負數 5...

二進位制數補碼的計算問題,二進位制補碼怎麼計算的

十進位制數的每一位最多需要四位二進位制數才能表示,所以3的二進位制數本來是11,但是為了滿足四位,就需要在高位新增兩個0補全為四位,也就是變成了0011。這只是為了方便計算而這樣表示的,不影響任何數的大小。希望能夠幫到你哈。二進位制補碼怎麼計算的 06如何快速的將二進位制轉換成十進位制。二進位制計算...

二進位制的負數如何算,二進位制的負數如何算?

飛鷹 在二進位制碼中,採用最高位是符號位的方法來區分正負數,正數的符號位為0 負數的符號位為1。剩下的就是這個數的絕對值部分。通過將負數轉為二進位制原碼,再求其原百碼的反碼,最後求得的補碼即負數的二進位制表示結果。比如整數 1。先取1的原碼 00000000 00000000 00000000 00...