為什么在 c語言中,int 有個范圍,這個范圍怎么計算的?
為什么在 c語言中,int 有個范圍,這個范圍怎么計算的?
int型取值范圍為-32768~32767是針對int型占2個字節(jié)來說的。下面具體說明該范圍的求法:int型占2個字節(jié),共16位。
關(guān)于int的取值范圍
int是一種數(shù)據(jù)類型,在編程語言C中,是用于定義整數(shù)類型變量的標(biāo)識符。在一般的電腦中,int占用4字節(jié),32比特,數(shù)據(jù)范圍為-2147483648~2147483647[-2^31~2^31-1]。
在微型機(jī)中,int占用2字節(jié),16比特,數(shù)據(jù)范圍為-32768~32767[-2^15~2^15-1]。
擴(kuò)展資料:
如果編寫者指定一個數(shù)超出了 int的范圍,將會被解釋為 float。如果float超出了?int的范圍,則結(jié)果不確定,因?yàn)闆]有足夠的精度使float給出一個確切的整數(shù)結(jié)果。在此情況下沒有警告,甚至沒有任何通知。
要明示地將一個值轉(zhuǎn)換為 int,用 (int) 或 (integer)?強(qiáng)制轉(zhuǎn)換。
不過大多數(shù)情況下都不需要強(qiáng)制轉(zhuǎn)換,因?yàn)楫?dāng)運(yùn)算符,函數(shù)或流程控制需要一個 int參數(shù)時,值會自動轉(zhuǎn)換。
在C中int的取值范圍為什么是這樣的
在C中,int是一個有符號的整數(shù),其**位表示符號。0為+,1為-。
在計算機(jī)中,通常采用補(bǔ)碼來表示一個二進(jìn)制的數(shù)。
根據(jù)補(bǔ)碼的原則,正數(shù)的補(bǔ)碼為其本身,負(fù)數(shù)的補(bǔ)碼為其對應(yīng)的二進(jìn)制代碼去反加1。故正數(shù)**值(111)在C中表示為:01111=2^15-1=327670表示為:0000000000000000-00000=-2^15=-32768上述二進(jìn)制代碼的補(bǔ)碼為:00000,由于所有補(bǔ)碼體系中沒有代碼與該值重合,于是就人為的定義為負(fù)值的最小值了。
為什么int的取值范圍是-32768~32767,真正懂的回答下,不懂就不要亂答了
int 的取值范圍和開發(fā)環(huán)境平臺有關(guān),不一定是 -32768~32767 之間。 只有在16位的環(huán)境平臺上才是 -32768~32767 之間,之所以是 -32768~32767 之間的原因是:計算機(jī)使用的是二進(jìn)制,那么16位環(huán)境平臺下的取值范圍則為 2 的 16 次方 為 32768,由于還要包括 負(fù)數(shù) 和 0,所以取值范圍則為 -32768~32767 之間。
現(xiàn)在普遍是32位的環(huán)境平臺,所以 int 的取值范圍是 2 的 32 次方,-2147483648 ~ 2147483647 之間,如果是64位的環(huán)境平臺,取值范圍會更大。
這也是為什么位數(shù)越高的操作系統(tǒng)和軟件,其處理能力越強(qiáng)大的原因。
為什么int型的范圍是-128到127?假設(shè)int是8位的
因?yàn)?進(jìn)制用補(bǔ)碼表示負(fù)數(shù)補(bǔ)碼是原碼各位取反+1,**位為1則為負(fù)數(shù)則10000000是**的負(fù)數(shù),-1后為01111111取反后為10000000則為128正數(shù)**是01111111百科,為127