c語言中整型資料的取值範圍是怎麼確定的

2021-12-25 21:15:18 字數 5254 閱讀 1385

1樓:紫荊

這個你要明白整型在計算機中的儲存原理--補碼形式儲存,舉一個類吧,short 所佔位數是16位,即

其中要說明的是最大整數 (0111111111111111)計算方法

0111111111111111 即相當於16進位制的7fff,轉換為10進位制後是 32767

最大負數:1000000000000000,由於最高位是1,判斷為負數,用求補碼的原理,按位求反+1

即 反碼 0111111111111111  補碼 100000000000000   轉換為10進位制 32768  補回符號

-32768

其它的同樣計算

2樓:匿名使用者

對於無符號數,比較簡單,根據佔用的位數可以直接計算:

unsigned short 16位 0~2的16次方-1(即65535)

unsigned int 16位 0~2的16次方-1(即65535)

unsigned long 32位 0~2的32次方-1(即4294967295)

對於有符號數,由於符號位佔用一位,並且負數要用補碼錶示

以8位資料為例:2進位制的11111111表示-1,10000000表示-128,所以負數範圍-128~-1;2進位制00000000表示0,01111111表示127,所以正數範圍0~127。合起來就是-128~127,找一下規律發現是- 2的(8-1)次方~2的(8-1)次方-1,那麼就可以得到任何位數的範圍:

short 16位 - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767)

int 16位 - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767)

long 32位 - 2的(32-1)次方~2的(32-1)次方-1(即-2147483648~2147483648)

3樓:青春之塔

看儲存空間和表示形式啊,補碼還是原碼。

c語言基本整型的資料範圍什麼意思

4樓:匿名使用者

基本整型變數,所佔位元組數為2,每個位元組等於八位二進位制數,可以用0和1表示的八位二進位制數,2個位元組也就是16位二進位制。

最高位表示正負,所以用0和1組成的16位數字範圍為-2的15次方~2的15次方,也就是-32768~32767。因此基本整型變數資料範圍是-32768~32767。

5樓:匿名使用者

int佔4個位元組,一個位元組4位,則它的空間有2的16次方byte,若有unsigned修飾,則說明它是無符號整型資料,它的範圍為0~65535,若沒有unsigned修飾,則說明最高位為符號位,它的範圍為-32768~32767

對於無符號數,比較簡單,根據佔用的位數可以直接計算:

unsigned short     16位      0~2的16次方-1(即65535)

unsigned int         16位      0~2的16次方-1(即65535)

unsigned long      32位      0~2的32次方-1(即4294967295)

對於有符號數,由於符號位佔用一位,並且負數要用補碼錶示。

以8位資料為例:2進位制的11111111表示-1,10000000表示-128,所以負數範圍-128~-1;2進位制00000000表示0,01111111表示127,所以正數範圍0~127。合起來就是-128~127,找一下規律發現是- 2的(8-1)次方~2的(8-1)次方-1,那麼就可以得到任何位數的範圍:

short     16位      - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767)

int         16位      - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767)

long      32位      - 2的(32-1)次方~2的(32-1)次方-1(即-2147483648~2147483648)

擴充套件資料:

(1)char:字元型資料,屬於整型資料的一種,佔用一個位元組

(2)unsigned char:無符號字元型資料,屬於整型資料的一種,佔用一個位元組

(3)short:短整型資料,屬於整型資料的一種,佔用兩個位元組

(4)unsigned short:無符號短整型資料,屬於整形資料的一種,佔用兩個位元組

(5)int:整形資料,屬於整型資料的一種,佔用四個位元組

(6)unsigned int:無符號整型資料,屬於整型資料的一種,佔用四個位元組

(7)long:長整型資料,屬於整型資料的一種,佔用四個位元組

(8)unsigned long:無符號長整型資料,屬於整形資料的一種,佔用四個位元組

實 型 變 量 的 類 型 有 float和 double兩 種 ,下 表 列 出 這 兩 種 型別所 佔 內 存 的 位數 和 其 表 示 範 圍 。資料型別 所佔位數 數的範圍:

float 32 3.4e-038~3.4e+038

double 64 1.7e-308~1.7e+308

雙 精 度 類 型 double比 單 精 度 類 型 float具 有 更 高 的 精 度 和更大 的 表 示 範 圍 ,常 常 使 用 。

6樓:薔祀

整型變數int佔4個位元組,一個位元組4位,則它的空間有2的16次方byte,若有unsigned修飾,則說明它是無符號整型資料,它的範圍為0~65535。若沒有unsigned修飾,則說明最高位為符號位,它的範圍為-32768~32767。

int是資料庫中一種資料型別,同時,作為函式,int函式指資料庫中常用函式中的「向下取整函式」。常用來取一個數中的整數部分。int是將一個數值向下取整為最接近的整數的函式。

為取整函式。

擴充套件資料

c語言中其他資料的取值範圍:

①短整型:

型別說明符為short int或short'c110f1。所佔位元組和取值範圍會因不同的編譯系統而有差異。對於16字機,short int 佔2個位元組,在大多數的32位機中,short int 佔4個位元組。

但總的來說,short int 至少16位,也就是2個位元組。

②長整型:

型別說明符為long int或long ,在記憶體中佔4個位元組,其取值為長整常數。在任何的編譯系統中,長整型都是佔4個位元組。在一般情況下,其所佔的位元組數和取值範圍與基本型相同。

③無符號型:

型別說明符為unsigned。在編譯系統中,系統會區分有符號數和無符號數,區分的根據是如何解釋位元組中的最高位,如果最高位被解釋為資料位,則整型資料則表示為無符號數。

7樓:匿名使用者

1 位元組 = 8位

int型 2位元組 = 16位

按vc++和c++的規定,int和long等長,都是32位的。short才是16位的。只有原始的c才定義int和short等長為16位。

這個資料範圍指的確實是具體 int的取值範圍,但不是你理解的那樣。

現在以16位的short為例。

首先必須清楚一個概念,計算機中存放的資料都是以二進位制形式存放的。short存放的是整型資料,是用固定位數16個二進位制位來表示一個整數,不足16位補0。

比如125的二進位制是1111101,那麼在記憶體中存放就是

0000 0000 0111 1101

那麼16個二進位制位能夠表示多少種不同的整數呢?稍微用點數學常識就知道,是2的16次方,也就是65536個不同的整數。所以對於無符號整數,unsigned short的範圍就是0~65535。

而為了表示負數,計算機用short的第一位作為符號位來表示正負。注意,計算機中是以補碼的形式存放整數的。對於正數,補碼是其本身;對於負數,其補碼是對其絕對值的按位取反,再加1的結果。

舉個簡單的例子:

125是0000 0000 0111 1101

-125計算過程:

125是0000 0000 0111 1101

按位取反,1111 1111 1000 0010

再加1,1111 1111 1000 0011

所以-125就是1111 1111 1000 0011。

補碼不是三言兩語能講得清楚的,樓主有個概念即可。

我們發現,正數的補碼首位都是0,負數的補碼首位都是1。

short有符號型的範圍是-32768~32767。

那麼,如果超出了範圍,會發生什麼現象呢?

很簡單,這稱為溢位。

比如short a = 32768

32768是1000 0000 0000 0000。還記得我講過嗎?正數的補碼首位都是0,但這裡首位為1,這是怎麼回事呢?

其實因為浪費了1位做符號位,short的有效位數只是15位而已,而2的15次方是32768,因此正數的範圍是0~32767,32768超出了範圍,計算機怎麼處理呢?結果就是把它當作負數,根據補碼計算它的原碼。反過來即可

1000 0000 0000 0000 減1,

0111 1111 1111 1111 再按位取反,

1000 0000 0000 0000 就是32768

所以1000 0000 0000 0000表示-32768

也就是說short a = 32768;把a輸出來得到-32768樓主可以試驗一下。

再舉一例:

unsigned short a=65536;

65536是1 0000 0000 0000 0000 注意這已經是17位了。計算機會自動擷取後面的16位

就是得到0000 0000 0000 0000,也就是0

所以unsigned short a=65536;輸出a得到0。

明白了嗎?

8樓:聽不清啊

對於無符號數,根據佔用的位數可以直接計算:

unsigned short 16位 0~2的16次方-1(即65535)

unsigned int 16位 0~2的16次方-1(即65535)

unsigned long 32位 0~2的32次方-1(即4294967295)

對於有符號數,由於0也佔用一個位置,導致負數的邊界值與正數的邊界值不一樣:

short 16位 - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767)

int 16位 - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767)

long 32位 - 2的(32-1)次方~2的(32-1)次方-1(即-2147483648~2147483647)

c語言中定義有元素的整型陣列,C語言中,定義一個有100個元素的整型陣列inta100,然後用迴圈產生100個隨機數求大神幫助

include include int main 注意,編譯文 du件字尾必zhi須是.c檔案。希望採dao納 c語言如何srand和rand函式產生10個1 100內的隨機數 需要準備的材料分別有 電腦 c語言 編譯器。1 首先,開啟c語言編譯器,新建一個初回始.cpp檔案,例如答 test.cp...

C語言中怎麼定義一個八位整型資料

你說的是八位元組吧?用long long定義。比如說int main 這樣就定義了一個8位元組長度的a變數。可以通過位域來實現。例如 struct bs c語言裡面怎麼定義一個二進位制整型值 c語言中沒有 二進位制變數 這一說法!c語言中的資料基本類。回型包括 char short int long...

C語言中什麼是字元型資料?如何宣告

char型別 一半情況下佔用8位,分為signed和unsigned,在計算機中全都以ascii值表示,signed char 有符號字元型 長度 位元組 為1 128 127 unsigned char 無符號字元型 長度 位元組 為1 0 255 書中基本只給到0 127 char c a ch...