8位二進位制原碼補碼反碼的表示範圍各是多少怎麼算的

2021-03-09 00:19:30 字數 5743 閱讀 4026

1樓:夢到雲淡風輕

8位二進位制原碼的表示範圍:-127~+1278位二進位制反碼的表示範圍:-127~+1278位二進位制補碼的表示範圍:

-128~+127n位二進位制原碼和n位二進位制反碼:-2^(n-1)-1~+2^(n-1)-1;n位二進位制補碼:-2^(n-1)~+2^(n-1)-1。

2樓:

為什麼規定範圍-128到127?而不是規定其他範圍?因為8位數,除去一位符號位,每一位只有0或1,那就有128種情況,每種情況按權值計算,就是0到127,加上正負號,就是256個數,但是+0和-0取反加一後都是00000000,所以就是255個數,但是這樣就會剩下一個10000000什麼都不表示,但是10000000如果看作無符號數就是128,而且第一位是1,所以用來表示-128。

知道了嗎?不要動不動就說規定的,任何事存在就有它的道理。

3樓:做而論道

這些範圍,不是算的,是規定的。

4樓:誕淚木

8位二進位制

原碼的表示範圍:

-127【1,1111111】~-0【1,000000】加上+127【0,1111111】~+0【0,0000000】

一共256位

8位二進位制反碼的表示範圍:

-127【1,1111111】~-0【1,000000】加上+127【0,1111111】~+0【0,0000000】

一共256位

8位二進位制補碼的表示範圍:根據溢位進位拋棄-0(原碼)【1,000000】(的補碼)【0,0000000】= +0(原碼)【0,0000000】(的補碼)【0,00000000】向重合了,所以有255位。(記住有256個)

所以剩下1個補碼【1,0000000】沒有原碼。所以規定為(就好像做題時設x,代表變數一樣)-128位其原碼。

為什麼8位二進位制的補碼取值範圍是-128~127

5樓:匿名使用者

八位二進位制正數的補碼範圍是0000 0000 ~ 0111 1111 即0 ~ 127,負數的補碼範圍是正數的原碼0000 0000 ~ 0111 1111 取反加一(也可以理解為負數1000 0000 ~ 1111 1111化為反碼末尾再加一)。

所以得到 1 0000 0000 ~ 1000 0001,1000 0001作為補碼,其原碼是1111 1111(-127),依次往前推,可得到-1的補碼為1111 1111,那麼補碼0000 0000的原碼是1000 0000符號位同時也可以看做數字位即表示-128,這也解釋了為什麼127(0111 1111)+1(0000 0001)=-128(1000 0000)。

在計算機中資料用補碼錶示,利用補碼統一了符號位與數值位的運算,同時解決了+0、-0問題,將空出來的二進位制原碼1000 0000表示為-128,這也符合自身邏輯意義的完整性。因此八位二進位制數表示範圍為-128~+127。

拓展資料:補碼的特性:

1、一個負整數(或原碼)與其補數(或補碼)相加,和為模。

2、對一個整數的補碼再求補碼,等於該整數自身。

3、補碼的正零與負零表示方法相同。

6樓:echo丶

首先八位二進位制數 0000 0000 ~1111 1111,一共可以表示 2^8=256 位數,如果表示無符號整數可以表示0~255。計算方法就是二進位制與十進位制之間的轉換。

如果想要表示有符號整數,就要將最前面一個二進位制位作為符號位,即0代表正數,1代表負數,後面7位為數值域,這就是原碼定義。這樣在現實生活中完全沒有問題,但在計算機中就出現了問題。

數的表示:

在原碼中,0的表示有兩種(+0)0000 0000、(-0)1000 0000,這樣就產生了編碼對映的不唯一性,在計算機上就要區分辨別。然而+0、-0卻沒有什麼現實意義。

數的運算:

為了解決上述數的表示問題,我們可以強制把轉換後的10000000強制認定為-128。但這又出現了一個新的問題就是數的運算。數學上,1+(-1)=0,而在二進位制中00000001+10000001=10000010,換算成十進位制為-2。

顯然出錯了。所以原碼的符號位不能直接參與運算,必須和其他位分開,這就增加了硬體的開銷和複雜性。

這個時候就要引入補碼,補碼錶示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。反碼定義為:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。

但為什麼要引入補碼呢?

以及負數補碼定義為什麼是相對應的正數原碼取反加一?

一、為什麼要引入補碼?

先解決第一個問題,引入補碼是為了解決計算機中數的表示和數的運算問題,使用補碼,可以將符號位和數值域統一處理,即引用了模運算在數理上對符號位的自動處理,利用模的自動丟棄實現了符號位的自然處理,僅僅通過編碼的改變就可以在不更改機器物理架構的基礎上完成的預期的要求。

二、什麼是「模」?

模的概念可以幫助理解補數和補碼。

「模」是指一個計量系統的計數範圍。如時鐘等。計算機也可以看成一個計量機器,它也有一個計量範圍,即都存在一個「模」。

例如: 時鐘的計量範圍是0~11,模=12。表示n位的計算機計量範圍是0~2^(n)-1,模=2^(n)。

「模」實質上是計量器產生「溢位」的量,它的值在計量器上表示不出來,計量器上只能表示出模的餘數。任何有模的計量器,均可化減法為加法運算。例如:

假設當前時針指向10點,而準確時間是6點,調整時間可有以下兩種撥法:一種是倒撥4小時,即:10-4=6;另一種是順撥8小時:

10+8=12+6=6 在以12模的系統中,加8和減4效果是一樣的,因此凡是減4運算,都可以用加8來代替。對「模」而言,8和4互為補數。實際上以12模的系統中,11和1,10和2,9和3,7和5,6和6都有這個特性。

共同的特點是兩者相加等於模。

對於計算機,其概念和方法完全一樣。n位計算機,設n=8, 所能表示的最大數是11111111,若再加1成為100000000(9位),但因只有8位,最高位1自然丟失。又回了00000000,所以8位二進位制系統的模為2^8。

在這樣的系統中減法問題也可以化成加法問題,只需把減數用相應的補數表示就可以了。把補數用到計算機對數的處理上,就是補碼。

對一個正數的原碼取反加一,得到這個正數對應負數的補碼。例如~6=-7,而且加一之後會多出一個八進位制補碼1000 0000,而這個補碼就對應著原碼1000 0000,數字位同時當做符號位即-128。

根據以上內容我們就可以來解釋八位二進位制數的表示範圍:

八位二進位制正數的補碼範圍是0000 0000 ~ 0111 1111 即0 ~ 127,負數的補碼範圍是正數的原碼0000 0000 ~ 0111 1111 取反加一(也可以理解為負數1000 0000 ~ 1111 1111化為反碼末尾再加一);

所以得到 1 0000 0000 ~ 1000 0001,1000 0001作為補碼,其原碼是1111 1111(-127),依次往前推,可得到-1的補碼為1111 1111,那麼補碼0000 0000的原碼是1000 0000符號位同時也可以看做數字位即表示-128,這也解釋了為什麼127(0111 1111)+1(0000 0001)=-128(1000 0000)。

總結:

在計算機中資料用補碼錶示,利用補碼統一了符號位與數值位的運算,同時解決了+0、-0問題,將空出來的二進位制原碼1000 0000表示為-128,這也符合自身邏輯意義的完整性。因此八位二進位制數表示範圍為-128~+127。

補充資料:

在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。

原碼(true form)是一種計算機中對數字的二進位制定點表示方法。原碼錶示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:

+0和-0),其餘位表示數值的大小。

7樓:塔駡德

8位二進位制的範圍就是-128~127,也就是-2^7~2^7-1,所以反碼也是這樣。

計算機對有符號數(包括浮點數)的表示有三種方法:原碼、反碼和補碼8位原碼能夠表示數的範圍是 -127~1278位反碼能夠表示數的範圍是 -127~1278位補碼能夠表示數的範圍是 -128~127既然範圍是-128~127,那肯定是用補碼錶示的。

8樓:沙裡波特

在補碼中,負數

非負數,是一樣多的。

字長 8 位,共有 256 組**。

用其中的一半(128 個),表示負數,就是-128~-1。

用其中的一半(128 個),表示非負數,即 0~+127。

綜合,就是-128  ~ +127。

9樓:匿名使用者

對8位二進位制的博馬取值範圍是128~127這個問題呢,我還正在討論中,還沒有完全正確的結果。

10樓:星空月刃

0到127 二進位制為 00000000到01111111

-128到-1 二進位制為10000000到11111111

11樓:蘇北第一皮

看這個就好了,講的很全面很清楚

12樓:匿名使用者

這個是有符號的,八位的最高位表示符號位,1為負,0為正

所以範圍是:1111 1111 ——0111 1111

-128的八位原碼、反碼、補碼是多少?

13樓:匿名使用者

原位:無

反碼:無

補碼:10000000

1 原碼和反碼都無法表示, 補碼是100000002 -128沒有反碼

3 反碼只能表示0到127,-0到-1274.二進位制原碼或者8位二進位制反碼的表示範圍是-127~+127,不能表示-128;而8位二進位制補碼的表示範圍是-128~+127,-128的8位二進位制補碼為10000000。

14樓:如此_青春

在八位二進位制下,因為有一位是符號位,原碼和反碼只能表示0到127,-0到-127,所以-128不能用原碼或反碼錶示。

按這種說法,128因為無法用八位二進位制下的原碼錶示,則-128的八位二進位制下的補碼也是不存在的。

但是,為了在數的表示上消除編碼對映的不唯一性,所以通過人為的定義對轉換的10000000強制認定為-128。

因此,-128八位二進位制下的原碼和反碼不存在,而八位二進位制下的補碼為10000000。

擴充套件資料:

1.原碼的求法:

(1)對於正數,轉化為二進位制數,在最前面新增一符號位(這是規定的),用1表示負數,0表示正數。

如:0000 0000是一個位元組,其中左邊第一個0為符號位,表示是正數,其它七位表示二進位制的值.其實,機器不管這些,什麼符號位還是值,機器統統看作是值來計算。

正數的原碼、反碼、補碼是同一個數。

(2)對於負數,轉化為二進位制數,前面符號位為1。表示是負數。

計算原碼只要在轉化的二進位制數前面加上相應的符號位就行了.

2.反碼的求法:對於負數,將原碼各位取反,符號位不變.

3.補碼的求法:對於負數,將反碼加上二進位制的1即可,也就是反碼在最後一位上加上1就是補碼了。

請問把二進位制轉換成它的原碼反碼補碼怎麼做呀

反碼錶示法規定 正數的反碼與其原碼相同 負數的反碼是對其原碼逐位取反,但符號位除外。補碼錶示法規定 正數的補碼與其原碼相同 負數的補碼是在其反碼的末位加1。1 原碼錶示法 原碼錶示法是機器數的一種簡單的表示法。其符號位用0表示正號,用 表示負號,數值一般用二進位制形式表示。設有一數為x,則原碼錶示可...

十進位制數 74用8位二進位制補碼錶示是多少

74的原碼是01001010 反碼是10110101 補碼是10110110 答案補充 給你一個求任意整數的補碼的程式。範圍在 128到255,或想範圍更廣,可自行改 include stdafx.h include stdio.h include stdlib.h main printf 2d n...

帶符號的8位二進位制整數,若採用原碼錶示,其數值範圍求詳解要不看不懂啊

原碼通常一般用8位二進位制數表示帶符號的真值 我們生活中用的數,即非機器數 好像是因為早期線路都是每次輸送1位元組 但在宣告的情況下原 反 補 移碼都有其他位數的情況數值定義 真值0 10000000 範圍 x表示真值,x 表示帶符號的真值,x 原表示其原碼 反 補 移碼類同 n表示真值的整數位數 ...