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

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

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,與上文一致。

二進位制的補碼多少位?8位二進位制補碼計算步驟是什麼

這個,可以自定義。最大的位數,取決於你的計算機,記憶體的大小。8位二進位制補碼計算步驟是什麼?正數 零的補碼,與其數值相同。負數的補碼,用 256 加上該數。補碼的計算步驟,與普通的二進位制計算步驟,完全相同。1 補碼是抄把減法用加法計算,採用進製丟的方法得到結果時應該補足的數。位二進位制補碼的計算...

二進位制轉十進位制演算法,十進位制轉二進位制演算法

我們在網路上經常遇到要ip轉為二進位制來劃分或彙總子網,所以要找一種最快速的十進位制轉二進位制的方法 這種演算法用除16來算,基於我們對16以內的二進位制很熟悉 朋友你也許也奇怪,除16不是算16進製制轉換的嗎?呵呵,下面看來我說.我們用d表示10進製,用b表示2進製 公式是a d 16 b 餘c....

二進位制小數如何轉化為十進位制,如,二進位制小數如何轉化為十進位制,如

毓人 0.101 2 1 2 0 2 1 2 10 0.5 0 2 1 2 10 0.5 2 1 2 10 0.25 1 2 10 1.25 2 10 0.625 10 生活如歌 0.101b 2 1 2 3 0.625 二m進製數與z十s進製數如何轉換 3 二v進製數 十l進製數 對於j較小j的二...