請問有符號短整型最小值的補碼(儲存碼)為什麼是

2022-06-16 06:35:21 字數 4382 閱讀 8438

1樓:斯朵邇

其次你問的真是一塌糊塗。

——————————————————————————

接下來開始回答:

首先我們假設int型別是四位(因為寫那麼多的0和1麻煩,只寫四個比較方便)

以前的時候int型別的規定,用第一個位表示正負號,也就是原碼的表示方法,0001表示1,1001表示-1。如下表:

現在可以看出,int的最小值應該為1111也就是-7,推廣到十六位,int最小數值原碼應該是1111 1111 1111 1111,缺點:0000和1000都表示0,那麼有點浪費,並且容易混淆。

所以現在大多系統都是用二進位制補碼的表示方法:

可以看出能夠表示的負數要比正數多一個,充分利用了。最小的int數值為1000(也就是-8),推廣到十六位,最小的int型別數值的補碼是 1000 0000 0000 0000。

我也正是c語言入門,望高人指點。

2樓:界限

有符號短整型最小值的原碼為1000 0000 0000 0000(這是系統規定的,避免浪費),也就是-32768

c語言新人,為什麼有符號整型最小值

3樓:

因為1000000000000000是-32768,而1111111111111111是-1。由於1111111111111111+1==0000000000000000即0,說明1111111111111111是-1是沒有問題的;1111111111111111-1是1111111111111110,它是-2,一直減下去,減到-32768時就是1000000000000000。要用負數的補碼可以用「符號位不變,資料位取反+1」計算的話,由於1000000000000000這個數比較特殊,不易理解,你用一個別的數試驗一下就理解了。

4樓:虞姬戲項羽

沒頭沒尾的,最小值也不是這個吧,是多少,我忘記了,看你多少位位元組。一般最小值就是2的多少次方。然後,首位是符號,因為計算機的值,存在一個溢位的情況

為什麼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樓:塔駡德

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

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

7樓:沙裡波特

在補碼中,負數

非負數,是一樣多的。

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

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

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

綜合,就是-128  ~ +127。

8樓:匿名使用者

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

9樓:星空月刃

0到127 二進位制為 00000000到01111111

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

10樓:蘇北第一皮

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

11樓:匿名使用者

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

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

c語言中int型別和儲存範圍問題。

12樓:聽不清啊

在計算機中,整數型別是以補碼形式儲存的。32位二進位制全部都是1的補碼,用來表示-1。關於補碼的知識,請你另行查詢資料。

無符號整數是用來儲存非負整數的一種資料格式,以四位二進位制為例,他能表示的最小值是0000表示0,最大值是1111對應的是十進位制15。

為什麼補碼1000 0000 對應8位最小值 -128? 128不是光數值就要8位表示,加上符號

13樓:匿名使用者

最高位是符號位,1表示負數,除了符號位取反再加1就是原始碼,因為你是用8位數表示的,-127是1000 0001,-128是1000 0000,是8位數最小的了

j**a的基本資料型別有哪些

14樓:寫在楓葉上的故事

1、布林型(boolean)

取值範圍:true 或 false

2、位元組型(byte)

取值範圍:0 - 255

3、短整型(short)

取值範圍:-32,768 ~ 32767

4、整型(int)

取值範圍:-2,147,483,648 ~ 2,147,483,647

5、長整型(long)

取值範圍:-9223372036854775808~9223372036854775807

6、單精度浮點型(float)

負數範圍:

-3.402823e38 ~ -1.401298e-45

正數範圍:

1.401298e-45 ~ 3.402823e38

7、雙精度浮點型(double)

負數範圍:

-1.797,693,134,862,32e308 ~

-4.940,656,458,412,47e-324

正數範圍:

4.940,656,458,412,47e-324 ~

1.797,693,134,862,32e308

8、字元型(char)

取值範圍:'\u0000'~'\ufff'

擴充套件資料

任何資料型別的陣列都需要 20 個位元組的記憶體空間,加上每一陣列維數佔 4 個位元組,再加上資料本身所佔用的空間。資料所佔用的記憶體空間可以用資料元數目乘上每個元素的大小加以計算。

例如,以 4 個 2 位元組之 integer 資料元所組成的一維陣列中的資料,佔 8 個位元組。這 8 個位元組加上額外的 24 個位元組,使得這個陣列所需總記憶體空間為 32 個位元組。

[c語言]int的數的範圍怎麼求?整型常量數值的第一位是符號位而不表示大小嗎?

15樓:大維

不同的編譯器對於整型數的範圍有所不同!不過一般都是兩個位元組。比如微控制器c51整型範圍是兩個位元組!範圍是-32768到32767!

範圍如何求呢?

有符號數在計算機中用補碼錶示!最高位是符號位,0為正數,1為負數!正數的補碼還是他本省,負數是求補碼的方法是寫出他對應的正數 比如-32768 對應的是32768 把他的二進位制取反加1 那麼正數最大 0111 1111 1111 1111也就是0x7fff 十進位制就是32767 負數的最小值二進位制補碼1000 0000 0000 0000 轉換回去 其他位減一 是0111 111 1111 1111取反 之後1000 0000 0000 0000 那麼他的值就是32768 因此對應的負數是-32768

轉換後是也就是32768因為符號位是1所以是-32768

16樓:中兵勘察海外部

這個其實和編譯器的版本相關,看看就知道

求函式yxx的最大值和最小值

函式分為3段 第一段為x 1 這時候y x 1 x 2 1 第二段為 1 x 2 這時候y x 1 x 2 2x 1 當x 1時,y 3,當x 2時,y 3,第三段x 2時,y x 1 x 2 3 所以最大值為3,最小值專為 3,分為當屬x 2和x 1時實現。另外也可用畫圖的方法作答 求函式y x ...

中的行距的固定值與最小值有什麼區別

固定值 固定不變的一個行間距,不會因字的大小發生變化。最小值 行距不小於此值,可隨字號的變大而自動加大。例如下面的兩段,分別設定為五號字,最小行距 20磅和固定行距 20磅。將兩的字號都設定為小初,其效果如圖所示。固定值需要自己設定,最小值是為了保證將檔案的字型全部顯示的最小值。固定值是限制只能用這...

已知函式y a bsinx的最大值是5 最小值是1 求a,b的值

b 0,a b 5,a b 1,a 3,b 2,b 0,a b 1,a b 5,a 3,b 2 a 3,b 2或a 3,b 2 最大a b 最小a b a b 5 a b 1 a 3,b 2 y a bsinx 因為 1 0時,ymin a b 1,ymax a b 5,則a 3,b 2 當b 0時...