java數(shù)據(jù)類型的取值范圍
一、 取值范圍
我們?cè)谥v解8種基本類型時(shí),大家會(huì)發(fā)現(xiàn),不同的類型大小不同,也就是它們有不同的取值范圍。接下來(lái)給大家總結(jié)一下這幾種不同類型的取值范圍。
二、 原理剖析
有的初學(xué)者可能不理解,為什么不同數(shù)據(jù)類型的取值范圍大小不一樣?比如同樣都是整數(shù),為什么有的范圍大有的范圍小?壹哥簡(jiǎn)單給大家舉個(gè)例子。計(jì)算機(jī)的每個(gè)內(nèi)存單元,都有自己的內(nèi)存地址,一般都是從0開始編號(hào)。而每個(gè)內(nèi)存單元都可以看作是一個(gè)房間,房間有大有小,并且房間的類型不同,有的是大床房,有的是標(biāo)間,有的是總統(tǒng)套房。另外內(nèi)存地址就是房間的門牌號(hào),方便我們找到對(duì)應(yīng)的房間。
不同的數(shù)據(jù)類型之所以取值范圍不同,就好比每種類型都是不同的房型,有大有小,如下圖所示:
這些不同的類型,占用的字節(jié)大小不同,所以取值范圍自然也不一樣。這個(gè)時(shí)候就有人發(fā)出疑問(wèn)了:byte類型取值范圍為什么是127到-128?
首先,需要理解byte類型是一種8位二進(jìn)制補(bǔ)碼整數(shù)數(shù)據(jù)類型,它可以表示的整數(shù)范圍為-128到127。為了更好地理解這個(gè)范圍,可以將byte類型的二進(jìn)制表示方式進(jìn)行分析和繪制。在byte類型中,最高位為符號(hào)位,表示正數(shù)或負(fù)數(shù)。當(dāng)最高位為0時(shí),表示一個(gè)正數(shù),當(dāng)最高位為1時(shí),表示一個(gè)負(fù)數(shù)。
對(duì)于正數(shù),byte類型使用無(wú)符號(hào)二進(jìn)制表示,最高位為0,其余位表示數(shù)值大小。例如,十進(jìn)制數(shù)10的二進(jìn)制表示為00001010,因?yàn)樗且粋€(gè)正數(shù)。對(duì)于負(fù)數(shù),byte類型使用補(bǔ)碼二進(jìn)制表示,需要先將其絕對(duì)值取反,然后加1。例如,十進(jìn)制數(shù)-10的二進(jìn)制表示為11110110,這個(gè)值是通過(guò)將絕對(duì)值10的二進(jìn)制表示00001010取反得到的,然后再加1得到的。
因此,byte類型的取值范圍為從-128到127,如下圖所示:
注意:這里的最高位是符號(hào)位,表示正數(shù)或負(fù)數(shù),所以當(dāng)最高位為1時(shí),表示負(fù)數(shù),其余位的值需要按位取反再加1才能得到該負(fù)數(shù)的絕對(duì)值。
那么現(xiàn)在大家明白了嗎?