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...