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