32767和 32768在C語言中有什麼含義

2022-11-06 15:16:43 字數 5063 閱讀 3105

1樓:龍彩榮蓋衣

int型取值範圍為-32768~32767是針對int型佔2個位元組來說的。

下面具體說明該範圍的求法:

int型佔2個位元組,共16位。

int型能表示的最大正數為(最高位為符號位,正數的符號位為0):0111

1111

1111

1111

也即2^15-1=32767

int型能表示的最小負數為(最高位為符號位,負數的符號位為1):1000

0000

0000

0000(補碼),而在計算機中負數是利用補碼進行儲存的,所以將1000

0000

0000

0000轉換為原始碼就是1000

0000

0000

0000,也即-2^15=32768

所以int型取值範圍為-32768~32767

2樓:海獅

說實在的,不是在c語言中,在c語言中沒什麼特別的地方。

在計算機體系結構裡,可能引起人的誤解是真的。

對於乙個長度為16bit的有符號數,(32位、64位系統裡面一般是signed short int,16位系統裡面可以是signed short (早期版本int可以省略),或者unsigned),能夠表示的最大值和最小值。

其實超出了也不影響什麼,只是理解不同。

新版的編譯器可以用

int16_t,vc用__int16也可以看看下面的例子:

signed short x,y;

x=25000+10000;

y=x-5000;

printf("x=%d,y=%d\n",x,y);

y=30000是吧對嗎?

x的值呢?x=35000(同餘的符號不好打,就寫等號吧)=35000-65536 =-30536

其實這個就是「正確結果」,這個結果在做計算的時候就是這樣。

就好比你做數學題,6+7,如果做豎式,結果為3,進製為1。

這裡面一樣的,進製為1,結果-30536。

3樓:匿名使用者

2的15次方,long(int)型變數的取值範圍

4樓:聽不清啊

在16位的turbo c中是int 的最大值和最小值。

在32位的c編譯器中就是兩個普通的整數。

c語言中,基本整形,取值範圍-32768到32767什麼意思

5樓:匿名使用者

就是說如果你定義乙個整型變數,數值為32768,那麼就會出現執行錯誤,因為你賦的數值超過了它本身的最大數值,最小也是一樣的意思

6樓:匿名使用者

兩個位元組,16位,第一位為標誌位,所以最大應該是:01111111 11111111,用等比數列求和,2的0次方一直加到2的14次方,等於32767,32767+1變成-32768,因為加1變成10000000 00000000,明顯時負數,就是-32768的補碼形式,所以簡單整形只能在-32768-32767

7樓:匿名使用者

就是int型別的值只能在這個範圍,不在或不是都報錯

8樓:唯龍獨尊

整型4個位元組,每個位元組八位,所以:

無符號整型型 範圍-2^31到2^31-1 即-32768到32767

有符號整型 範圍0到2^32-1

c語言中,"整型"跟"短整型"的取值範圍都是 -32768~32767,請問兩者有什麼差別?

9樓:匿名使用者

現在的電腦基本都是32位機..

你用vs2005/2003的時候.建專案都會出現乙個32位控制台..

int已經從16位擴充套件到了32位..佔4個位元組..和long int一樣了..所以現在很少使用long int了.

而short int是16位元組..佔2個位元組..差別嘛..應該就是就是..所占用記憶體大小不同..還有..取值範圍不同..

別的沒啥區別了..

10樓:

c語言沒有具體規定各類資料所佔記憶體的位元組數,只要求long型資料長於int型,short型短於int 型,是由計算機系統自行決定,有的short和 int都是16位,long 是32位,有的short為16位,long和int都是32位,通常是long 為32位,short為16位,而int可以是16位,也可以是32位

這兩個都是用於儲存整數.短整型的二進位制位長是16,長整型的是32位.就是說長整型可以表示位數更多的整數.

短整型所能表示的整數的值域為-32768~32767,長整型則為-2147483648~2147483647.例如,如果有個數為32780,那麼它只能用長整型表示,而不能用短整型表示.

在c語言中為什麼int型的取值範圍是-32768~32767

11樓:天雲小店

int型取值範圍為-32768~32767是針對int型佔2個位元組來說的。

下面具體說明該範圍的求法:

int型佔2個位元組,共16位。

int型能表示的最大正數為(最高位為符號位,正數的符號位為0):0111 1111 1111 1111

也即2^15-1=32767

int型能表示的最小負數為(最高位為符號位,負數的符號位為1):1000 0000 0000 0000(補碼),而在計算機中負數是利用補碼進行儲存的,所以將1000 0000 0000 0000轉換為原始碼就是1000 0000 0000 0000,也即-2^15=32768

所以int型取值範圍為-32768~32767

12樓:

1樓的正解,因為有個0,其實你自己用2進製算一下就明白了

13樓:匿名使用者

範圍而已,沒什麼為什麼

為什麼c語言中的整型取值範圍是--32768~32767,是按什麼規則規定,推理的?

14樓:

int 4位元組 有符號時符號1位 數字最多15位 範圍為 2的15次方=32768 所以負數 -1到-32768 非負數0到32767

15樓:匿名使用者

整型的寬度是乙個字,也就是2個位元組,16個二進位制位,最高一位二進位制位用來表示符號(正或負),那麼剩下的15位來表示數值。

01111111 11111111是32767,最大的正整數

00000000 00000001是1

00000000 00000000是0

11111111 11111111是-1(不是-32767)

10000000 00000001是-32767(不是-1)

10000000 00000000是-32768(不是-0),最小的負整數

計算機表示數主要從運算方式的一致性來考慮。

比如00000000 00000001表示1很好理解,但是11111111 11111111為什麼是-1呢?

按照二進位制加法

11111111 11111111 + 00000000 00000001= 1 00000000 00000000

結果超出了整型的寬度,溢位部分被忽略,最後的計算機結果是00000000 00000000

那麼換成十進位制,?+1=0,所以11111111 11111111表示成十進位制就是-1

c語言中short整型資料的範圍「-32768——32767」中的「-32768」是如何確定的?

16樓:天雲小店

short 占用記憶體空間2個位元組,也就是16個二進位制位。

表示負數時,最高位為符號位(負數的符號位為1),最小的負數為1000 0000 0000 0000 ,但是在計算機中負數是用補碼(符號位不變,其餘位取反,然後加1)表示的,人們規定1000 0000 0000 0000的補碼為-32768 ,所以在補碼系統中最小的是-32768

表示正數時,最高位為符號位(正數的符號位為0),最大的正數為0111 1111 1111 1111 即2^15 - 1 = 32767

關於c語言中有符號的整數值範圍為什麼是從-32768~32767

17樓:任菊經秋

有符號整形變數int型的,在c語言裡面規定是用兩個位元組也就是16個二進位制位來表示的。最高為用來表示正負,後面還有15位數,於是一共可以表示2的15次方個數字,也就是32768個,但是呢,數字0是用的16個二進位制0表示的,所以正數只能到32767了,負數則是到-32768.這兩個數字就是這麼來的

18樓:圭若谷紅燕

首先:計算機中數值是用2進製表示的,也就是0和1計算機有16位和32位之分,但是現在普遍都是32位的了其次:在計算機中數值都是用補碼表示的,乙個正數的補碼是他本身,而負數的補碼就是按位取反加1

例如-10在2進製中的表示方法為:先求10的原碼1010對1010取反為0000

0000

0000

0101(整數為2位元組也就是16位)然後加1即1111

1111

1111

0110

我們現在來10

和-10在計算機中表示的對比:

10補碼/原碼:0000

0000

0000

1010

-10的補碼:

1111

1111

1111

0110

所以可以看出最左邊的一位也就是最高位代表這個數是正還是負0就是正1就是付

我剛才說在32位機中int型是兩個位元組也就是16位,那麼最小的負數是幾?是1000

0000

0000

0000

我說了最高位的代表正負

是不所以這個數是-2^15

那麼最大的正數怎麼表示?0111

1111

1111

1111

這個數表示成2^15

,可是這中間有乙個0000

0000

0000

0000

得把他摳出去。也就是2^15-1

在c語言中s ii 的區別,在C語言中s i 和s i i 的區別

用生活中的數學來講就是 第一種相當於 x 1 1 第二種相當於 x y 1 y 1兩種結果一樣,第二種不過是繞了個圈子,把結果賦值過去了希望能幫到你 沒有什麼不同啊!都是將i使用之後再加一,對於陣列元素s i 和s i 是相等的。s i 只是比 s i i 寫法上簡單一點,其實功能是一樣的。沒區別 ...

C語言中continue和break在退出迴圈時可以互換嗎

不可以!continue 是回到while 條件 這裡進行檢查是否條件還成立 如果成立繼續迴圈,如果不成立結束迴圈!break 是直接跳出迴圈體,結束迴圈了!不可以啊 break可以跳出迴圈體結束整個迴圈啦 不判斷執行迴圈的條件了 ercontinue一般為結束本次迴圈不是終止整個迴圈的 不可以,再...

在C語言中54d和5d區別C語言05d和5d有什麼不同啊?

d是輸出整形。5.4d。小數點前面的數字 5 是輸出的資料寬度,是左對齊輸出,不足5位的以空格輸出 小數點後面的數字 4 是指輸出資料小數點保留位數,四捨五入輸出。預設是輸出六位小數。5d也就是前面所述的情況,輸出資料寬度,比如 d輸出阿拉伯數字 1 佔乙個寬度,輸出時 1,5d輸出時 1,前面有四...