Java中數據類型的取值范圍


整數數據類型的取值范圍

我們都知道計算機的底層是二進制,也知道不同的整數類型存儲值的范圍不同,可這些數值在計算機底層是怎樣存儲的呢?數值范圍又是怎么計算出來的呢?
下面以java來進行舉例:

byte	1個字節 (8bit)		-2^7~2^7-1	
short	2個字節 (16bit)	-2^16~2^16-1
int		4個字節 (32bit)	-2^31~2^31-1
long	8個字節 (64bit)	-2^63~2^63-1

整數數據類型其中最高位是符號位,用來表示正數或負數。其中0用來表示正數,1用來表示負數。
那么,剩下的位就是數值位,用來表示數值大小的。

那么byte的可用范圍就是7位了:
從 000 0000 ~ 111 1111 轉換成十進制也就是從 0 ~ 127

如果加上符號位呢?
1111 1111 ~ 0111 1111 轉換成十進制是從 -127 ~ 127
可是如果我們的 111 1111 還能再進一位呢?
那不就是變成 1000 0000了嗎,那這個數到底是用來表示-128還是128呢?
因為符號位的存在,如果讓它來表示128的話,就亂套了,所以我們就規定只用它來表示正的128。

所以一個字節能表示的最大范圍是從 -2^7 ~ 2^7-1 ps:2^7是128

無符號類型的取值范圍(char)

Java中的char類型是用兩個字節來表示,使用的是Unicode編碼,所以可以正常表示中文字符。
兩個字節一共十六位,又因為沒有符號位,都是數值位的原因,所以表值范圍是從:
0000 0000 0000 0000 ~ 1111 1111 1111 1111 1111 1111 (65535)

所以char類型的表值范圍是從 0 ~ 2^16-1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM