真值為 1000 十進位 的無符號數和機內二進位補碼是一樣的嗎?

2025-02-10 05:10:25 字數 7415 閱讀 4850

1樓:聽不清啊

計算機中輸入-1000時,是以補碼的形式讀到內容中的;

如果把它分別儲存為無符號數和有符號數(機內二進位補碼。

時,它們在計算機中的內容是一樣的,但是把儲存的內容分別以無符號數和有符號數讀出來時,內容就不一樣了。

#include <

void prt1(unsigned int

a) /列印32位無符號整數。

的二進位形式。

unsigned int i;

for(i=31; i>0; i--)

printf("%d",(a&(1printf("%d",a&1);

void prt2(int a) /列印32位有符號整數(補碼)的二進位形式。

unsigned int i;

for(i=31; i>0; i--)

printf("%d",(a&(1printf("%d",a&1);

int main()

unsigned int a;

int b;

scanf("%u%d",&a,&b); 分別以無符號數和有符號整數的格式讀入乙個相同的數。

正常情況下,無符號數不能輸入負數,否則就「溢位」了。

printf("%u %d",a,b); 輸出讀到的無符號數和有符號整數。

printf("a%c=b",a==b?'=以計算機內的標準判斷這兩個數有無區別。

prt1(a); 列印32位無符號整數的二進位形式。

prt2(b); 列印32位有符號整數(補碼)的二進位形式。

return 0;

2樓:做而論道

計算機專業所說的「無符號數」,就是小學學過的「自然數」。

自然數,是沒有負數的。

那麼,「-1000 (十進位) 的無符號數

,這說法,不成立。

計算機專業所說的「帶符號數」,就是小學學過的「整數」。

整數,包括:正整數、負整數和零。

整數,在計算機中,就是以二進位補碼錶示和存放的。

機器碼10110101,它是補碼時,表示十進位的值是多少?

3樓:mono教育

是-75。10110101 = 181(十進位)

真值=181-256=-75。

最前面那位是符號位,代表符號,後七位是數字位,補碼求原碼,正數不變,負數除符號位其它取反再加1,所以求得原碼後,在將除符號位後七位二進位轉換為十進位。首先第一步求1011 0100的十進位數為180然後256-180=76。-76的補碼就屬是180的原碼。

假設當前時針指向8點,而準確時間是6點,調整時間可有以下兩種撥法:一種是倒撥2小時,即8-2=6;另一種是順撥10小時,8+10=12+6=6,即8-2=8+10=8+12-2(mod 12).在12為模的系統裡,加10和減2效果是一樣的,因此凡是減2運算,都可以用加10來代替。若用一般公式可表示為:

a-b=a-b+mod=a+mod-b。對「模」而言,2和10互為補數。

4樓:咪眾

0110101 符號位為,為負數。後面這7位 0110101 取反,得 1001010,再+1,寫上符號,得原碼:1001011 【注意第乙個表示負號,不是數值】

十進位真值 由後7位 1001011 =2^6+2^3+2^1+2^0=64+8+2+1=75,加上負號,為 -75

5樓:沙裡波特

是-75。

求解方法:10110101 = 181(十進位)

真值=181-256=-75。

6樓:做而論道

由補碼,求其代表的數字(即真值),方法極其簡單。

既不用求「原碼反碼」,也不用考慮「符號位不變」。

你只要做【數 制 轉 換】,即可。

例如:八位補碼是

首位的 1,既代表負號,也代表數值-128。

其餘各位,都是正數,求和: 32 + 16 + 4 + 1 = +53。

總和,就是真值:-128 + 53 =-75。

如果,補碼是

真值就是: 32 + 16 + 4 + 1 = +53。

已知8位機器碼10110100,它是補碼時,表示的十進位真值是?

7樓:做而論道

8 位機器碼1011 0100,它是補碼時,表示的十進位真值是?

是:-128 + 32 + 16 + 4 = 76。

把補碼轉換為十進位數,是很容易的。

千萬別用「原碼反碼符號位取反加一」,那是死衚衕。

你只要做「各位求和」,即可得到十進位數。

例如補碼是 1000 1100。

其首位 1,既代表負號,也代表數值-128。

再與其它位相加,真值就是:-128 + 8 + 4 = 116。

如果補碼是 0000 1100。

首位是 0,負數就不存在了。

只把數值位相加,真值就是:8 + 4 = 12。

二進位帶符號整數(補碼)10000000的表示的十進位數為什麼是-128不是-

8樓:做而論道

補碼10000000,表示多大?

這個八位的補碼,代表的是:-128。

這個問題,不能用原碼來解決。

因為,-128,有八位的補碼,卻沒有八位的原碼和反碼

原碼和反碼的定義,都是有缺陷的:

乙個數字零,它們卻都定義了兩個編碼 +0-0!

所以,八位的原碼反碼,只能表示-127 ~ 127。

無法表示-128。

因此,用「取反加一」求-0 或-128 的補碼,都是行不通的。

同樣,用「取反加一」求補碼 1000 0000 對應的原碼,也是不靈的。

求補碼的正規做法,是使用定義式:

當 x >= 0, [x ]補 = x; 零和正數不用變換。

當 x < 0, [x ]補 = x + 2^n。 n 是補碼的位數。

這個定義式,是通用的。你可以在書上找到的。

那麼,[-128]補 = -128 + 2^8 = 1000 0000 (二進位。

所以,八位的補碼 1000 0000,就是代表數值-128。

9樓:弭修平相曉

補碼首位為1,肯定為負數。

餘下的7個0按位取反再加1

為128,所以考慮符號位是。

二進位補碼11101110的十進位真值為多少

10樓:羽月談娛

11101110二進位轉換十進位是,化為十進位為14*(16+1)=14*17=238,也可以把11101110先化為十六進位ee,再化為十進位,e為十進位的14,所以得14*16+14=238。

11樓:做而論道

由補碼求真值,是非常簡單的事。

你既不用求「反碼原碼」,也不用想著「符號位不變」。

取反加一」或「減一取反」,都是不需要的。

你只要做【數 制 轉 換】,結果,就出來了。

已知八位補碼是

首位的 1,既代表負數,也代表-128。

其餘位,都是正數:64 + 32 + 8 + 4 + 2 = 110。

各位之和,就是真值:-128 + 110 =-18。

如果補碼是

各位之和,就是真值:64 + 32 + 8 + 4 + 2 = 110。

為什麼-8的補碼用四位二進位人為規定表示為1000?懂得告訴我。。不懂就

12樓:做而論道

用四位補碼,可表示 16 個數值。

數值的範圍,是:-8 ~ 7。

8 的補碼,並不是人為規定的。

因為,-8 沒有四位的原碼和反碼。-8 的補碼,你用「取反加一」是求不出來的。

所以,你才誤解為「人為規定」。沒有原碼和亂遲友反碼,補碼,怎麼求呢?

你往下看:數值 0,補碼就是:0000。

-1 的補碼,就是:0000-1 = 1111。

其它的補碼,你就慢慢減吧。。。-8 的補碼,就是 1000。

同譁槐樣的道理,-128 的八位補碼,你也得這麼求。

13樓:初音

計算機的硬體,只有加法器。負數、減法,都必須用加法來完成。你看十進位:

24 + 99 = 一百) 23

捨棄進位,+99 可以當做-1 進行運算。

99 就是-旦橘巧1 的補數。

補數(補碼),就是乙個「代替負數進行運算的正數」。

對於 2 位 10 進位數,求補數的公式:

補數=負數+10^2。

計算機中,用二進位,就稱為補碼。

對於 8 位 2 進伍答制數,求補碼的公式:

補碼=負數+2^8。

1 的補碼是:-1 + 256 = 255 = 1111 1111。

2 的補碼是:-2 + 256 = 254 = 1111 1110。

模鍵128 的補碼是:128 = 1000 0000。

如果四位二進位,-8 的補碼,就是:

8 + 2^4 = 8 = 1000(二進位)。

求補碼,不要用「原碼取反加一」。

那個方法,是無法求出-8 的補碼的。

而且,你也不能理解使用補碼的意義。

十六進位帶符號數80(補碼錶示)的真值是多少

14樓:新科技

80h的二進位數是:10000000,這是補碼,轉換成原碼就是:1 00000000,相當於-128

15樓:做而論道

十六進位帶符號數 80(補碼錶示) =1000 0000。

求補碼所表示的真值,是很容易的。

千萬別用「原碼反碼符號位取反加一」,那是死衚衕。

你只要做「各位求和」,即可得到它代表的十進位數。

如果補碼是 1000 1100。

其首位 1,既代表負號,也代表數值-128。

再與其它位相加,真值就是:-128 + 8 + 4 = 116。

如果補碼是 0000 1100。

首位是 0,此時,負數就不存在了。

只把數值位相加,真值就是:8 + 4 = 12。

你說的補碼是 1000 0000。

對應的十進位數,當然就是-128。

如果你想要先變換成原碼再求真值,那就無路可走了!

因為,-128 並沒有八位的原碼和反碼。

二進位帶符號整數(補碼)10000000的表示的十進位是多少 謝謝大家的好心回答啊 要

16樓:做而論道

-128。

這個數字比較特殊,就死記下來吧。

可以看看:

17樓:網友

我看128可能是錯的。

我認為是+0

已知8位機器碼 10110100,它是補碼時,表示的十進位真值是( )。

18樓:做而論道

八位的補碼:1011 0100。

首位 1,既代表負號,也代表數值-128。

其餘都是正數:32 + 16 + 4 = 52。

求總和,立即就得出真值:-76。

如果首位是 0,就太簡單了。

八位的補碼:0011 0100。

其真值就是:32 + 16 + 4 = 52。

由補碼求真值,既不用求「反碼原碼」,也不用想著「符號位不變」。

「取反加一」或「減一取反」,都是不需要的。

你就直接進行【數制轉換】,就完事了。

簡單不簡單?意外不意外?

掌握了這種方法,再由數值求補碼,也不用整哪些爛事了。

老外腦子不好用,才必須用「符號位原碼反碼取反加一符號位不變」。

16進位制80的補碼錶示十進位制的真值是多少

80h的二進位制數是 10000000,這是補碼,轉換成原碼就是 1 00000000,相當於 128。16進位制 用16作為基數的計數系統。用數字0 9和字母a f 或其大寫a f 表示0到15。十六進位制數轉換成十進位制數 2進位制,用兩個阿拉伯數字 0 1 8進位制,用八個阿拉伯數字 0 1 ...

下列無符號十進位制整數中,能用二進位制位表示的是

b 201 八個二進位制位表示數字的範圍是0 255。下列4個無符號十進位制整數中,能用8個二進位制位表示的是 a 257 b 201 c 31 選擇b,8個二進位制位能表示的範圍是 128到255,a選項 c選項和d選項中的數字必須用9個二進位制位才能表示 用8個二進位制位能表示的最大的無符號整數...

二進位與十進位間的轉換,二進位與十進位之間的轉換方法

1 十進位轉二進位轉換成什麼就除以什麼,所以用31除以2 因為是二進位 31 2 15.1 然後再用15 2 7.1 再用7 2 3.1 3 2 1.1 1 2 0.1往下就不能除了。接著由下往上排列餘數部分就是11111 這就是31的二進位數 小數部分採取乘2取整法則取整數部分1變成了再由這時取0...