二進位制10000000應該表示128或者 0啊,幹嘛等於

時間 2021-08-30 10:37:16

1樓:沙里波特

什麼是補碼?怎麼求補碼?

看看書,就會知道,補碼,是有嚴格定義的。

按照定義來求補碼,就用不著涉及原碼反碼。

如果,你非要用求反加一的做法,就難免碰上原碼反碼。

但是,的八位碼長的限制下,-128,既沒有原碼,也沒有反碼。

這時,你還要用求反加一的做法,就一定會碰的頭破血流。

------------

按照補碼的定義,負數的補碼,定義如下:

[ x ]補 = 模-| x |

按照定義,-128,如下求補碼。

[-128]補 = 256-|-128| = 128寫成二進位制,就是:1000 0000。

------------

這就是詳解。

簡不簡單? 意不意外?

是不是比「求反加一」更方便?

利用定義,可以求任何負數的補碼。

但是,很多人,都是推崇「求反加一」的。

你們這些人,都是被人忽悠瘸了。呵呵

如此簡單的定義、方法,你們不學、不用,

偏要去鑽死胡同,呵呵

使用求反加一!!!

你們能找到-128 的原碼、反碼嗎?

2樓:

這是-128的補碼表示。0沒有正負之分;如果不引進補碼的概念,計算機計算的結果還真會出現+0、-0的問題,引進了補碼的概念就沒有這個問題了。上面這個數就是-128,是乙個位元組能表示的最小的有符號數。

它也符合求補碼的規則:符號位不變,資料位求反+1。也有一種觀點認為-128這個數特別,沒有反碼與補碼。

不管怎樣,計算機裡好多東西都是規定,只要運作起來順暢就是了。不然,下數的原碼、反碼、補碼都一樣你能理解嗎?取反了一樣,加一了還一樣,不可思議吧?

這也是規定。有些邊緣問題先記住,慢慢理解。這個數是不是-128的補碼,可以加乙個+128看是否為0來驗證。

位乙個位元組已不能表示有符號數+128了,那就要用兩個位元組,+128就是0000000010000000;-128也要擴充套件為兩個位元組,擴充套件原理是用符號位填滿擴充套件位元組(+128擴充套件也是用符號位填滿擴充套件位元組,它的符號位是0),就是1111111110000000。0000000010000000+1111111110000000=0。

3樓:問天問地

負數在現代計算機裡一般用補碼表示:

最高位是符號位,其餘位為數字的原碼取反+11000 0000還原為原碼:

最高位是1,表示負數,剩餘的各位取反 111 1111 再+1 得到 1000 0000, +128的原碼,整個數為-128

4樓:匿名使用者

那個『1 』既代表符號位,也代表數字位

5樓:手機使用者

2的7次方等多少?128,只能用0和1表示~!

6樓:匿名使用者

計算機儲存的都是資料的補碼,不是資料的原碼

二進位制:關於10000000如何表示-128的問題

7樓:熙苒

對的,有符號數 最高位是符號位。於是,計算機裡 +0 和 -0 編碼是不一樣的。計算機裡負數用補碼表示,為的是減法可以用加法器執行。

10000000 那個1是表示負數,但整個值是 -128,這是特殊的規定。

就這乙個值特殊。不能用尋常的減1求反判斷。這是為了讓有符號數,多1個有用的資料點,讓可描述的數值範圍從 -127 - +127 擴大到 -128 - +127。

只不過 把 -0 和 +0 合為 +0。

當然,一定要追問 怎麼算出 -128 的。需要增加1個更高位來考慮。考慮完了,再去掉那位。

負數在現代計算機裡一般用補碼表示:最高位是符號位,其餘位為數字的原碼取反+1

1000 0000還原為原碼:

最高位是1,表示負數,剩餘的各位取反 111 1111 再+1 得到 1000 0000, +128的原碼,整個數為-128

負數求負整數的補碼,將其對應正數二進位制表示所有位取反(包括符號位,0變1,1變0)後加1 。

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

與十進位制

(1)二進位制轉十進位制

方法:「按權求和」

【例】:

規律:個位上的數字的次數是0,十位上的數字的次數是1,......,依次遞增,而十

分位的數字的次數是-1,百分位上數字的次數是-2,......,依次遞減。

注意:不是任何乙個十進位制小數都能轉換成有限位的二進位制數。

(2)十進位制轉二進位制

· 十進位制整數轉二進位制數:「除以2取餘,逆序排列」(除二取餘法)

【例】:

89÷2 ……1

44÷2 ……0

22÷2 ……0

11÷2 ……1

5÷2 ……1

2÷2 ……0

1· 十進位制小數轉二進位制數:「乘以2取整,順序排列」(乘2取整法)

【例】: (0.625)10= (0.101)2

0.625x2=1.25 ……1

0.25 x2=0.50 ……0

0.50 x2=1.00 ……1

.十進位制負數轉二進位制:「先取正數的二進位制值,再取反,加1」

【例】:(-31)10 = (1)2

31的二進位制數為11111,取反00000,加1得1。

與八進位制

二進位制數轉換成八進位制數:從小數點開始,整數部分向左、小數部分向右,每3位為一組用一位八進位制數的數字表示,不足3位的要用「0」補足3位,就得到乙個八進位制數。

八進位制數轉換成二進位制數:把每乙個八進位制數轉換成3位的二進位制數,就得到乙個二進位制數。

八進位制數字與十進位制數字對應關係如下:

000 -> 0 | 004-> 4 | 010=8

001 -> 1 |005 -> 5| 011=9

002 -> 2 |006 -> 6 | 012=10

003 -> 3 |007 -> 7 | 013=11

【例】:將八進位制的37.416轉換成二進位制數:

3 7 . 4 1 6

011 111 .100 001 110

即:(37.416)8 =(11111.10000111)2

【例】:將二進位制的10110.0011 轉換成八進位制:

0 1 0 1 1 0 . 0 0 1 1 0 0

2 6 . 1 4

即:(10110.0011)2 = (26.14)8

與十六進製制

二進位制數轉換成十六進製制數:二進位制數轉換成十六進製制數時,只要從小數點位置開始,向左或向右每四位二進位制劃分一組(不足四位數可補0),然後寫出每一組二進位制數所對應的十六進製制數碼即可。

十六進製制數轉換成二進位制數:把每乙個十六進製制數轉換成4位的二進位制數,就得到乙個二進位制數。

十六進製制數字與二進位制數字的對應關係如下:

0000 -> 0 0100 -> 4 1000 -> 8 1100 -> c

0001 -> 1 0101 -> 5 1001 -> 9 1101 -> d

0010 -> 2 0110 -> 6 1010 -> a 1110 -> e

0011 -> 3 0111 -> 7 1011 -> b 1111 -> f

【例】:將十六進製制數5df.9 轉換成二進位制:

5 d f . 9

0101 1101 1111 .1001

即:(5df.9)16 =(10111011111.1001)2

【例】:將二進位制數1100001.111 轉換成十六進製制:

0110 0001 . 1110

6 1 . e

即:(1100001.111)2 =(61.e)16

請高手解釋一下為什麼-128用二進位制表示為1000000000000000? 20

8樓:做而論道

-128的8位補碼是:1000 0000b,換算成十進位制就是 128。

負數的補碼,是用「模」計算出來的,即:

[x]補 = 256 - |x| = 256- |-128| = 128。

不要用「求反加一」來算,那只不過是乙個經驗公式而已。

9樓:匿名使用者

嚴格來說在數學上,-128應該表示成-10000000(7個0),但是由於在計算機中每一位的資訊只有兩種,既高低電位,在邏輯上用0和1來表示,所以為了表示正負數,就規定在從左往右的第一位表示數的符號,0是正,是負,而後面的部分才是數值部分

10樓:匿名使用者

用128反覆除以2取餘數,再從下往上把餘數寫出來就行了。比如128除以2得64,餘數是0,就是問號前的第乙個0,再把64除以2得32,餘數是0就是問號前的第二個0,就這樣就出來了。 最前面那個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的二...

c語言 二進位制轉十六進位制,C語言 二進位制轉十六進位制

看看這個行不行?希望對你有幫助 include stdafx.h include stdio.h include string.h include conio.h include stdlib.h void convert char input,char output for ii nx ii9 0...