1.概念
首先我們得知道進(jìn)制的概念。所謂的進(jìn)制,也叫做進(jìn)位計(jì)數(shù)制,這是人為定義的帶進(jìn)位的計(jì)數(shù)方法。當(dāng)然也有不帶進(jìn)位的計(jì)數(shù)方法,比如原始的結(jié)繩計(jì)數(shù)法,唱票時(shí)常用的“正”字計(jì)數(shù)法等。
任何一種進(jìn)制,每一位上的數(shù)在運(yùn)算時(shí)都是滿X進(jìn)一位。比如十進(jìn)制是逢十進(jìn)一,十六進(jìn)制是逢十六進(jìn)一,二進(jìn)制就是逢二進(jìn)一,以此類推,X進(jìn)制就是逢X進(jìn)1位。以我們最熟悉的十進(jìn)制為例,每逢十進(jìn)一,當(dāng)數(shù)為19時(shí),下一位數(shù)的尾數(shù)便滿足該進(jìn)制的最大數(shù),于是下一位末位清零,前置位+1,變成20。
2.分類
在計(jì)算機(jī)中,目前常用的進(jìn)制有如下幾種:
●十進(jìn)制;
●二進(jìn)制;
●八進(jìn)制;
●十六進(jìn)制
因?yàn)樵谟?jì)算機(jī)的底層只能處理二進(jìn)制格式的數(shù)據(jù),也就是0和1,其他的文字、數(shù)字、字符等信息都要轉(zhuǎn)換成二進(jìn)制的格式,計(jì)算機(jī)的底層才能識別處理。所以作為一個(gè)程序員,二進(jìn)制是我們必須要理解和掌握的哦。
3. 二進(jìn)制
作為一個(gè)程序員,必須要掌握的進(jìn)制就是二進(jìn)制了,其實(shí)我們只需要參考十進(jìn)制就可以很容易理解進(jìn)制的問題了。所謂的二進(jìn)制,里面只有0和1,且滿二進(jìn)一,所以在二進(jìn)制里是看不到>=2的數(shù)的。比如二進(jìn)制的前10位數(shù)分別是0、1、10、11、100、101、110、111、1000、1001。
4. 八進(jìn)制
八進(jìn)制中有07共8個(gè)數(shù)字,但沒有8哦,其規(guī)則是滿八進(jìn)一,所以7的下一位數(shù)不是8,而是10。17的下一位數(shù)不是18,而是20。比如八進(jìn)制的前10位數(shù)分別是0、1、2、3、4、5、6、7、10、11......
5. 十六進(jìn)制
十六進(jìn)制中有0F共16個(gè)數(shù)字,同樣沒有16,其規(guī)則是滿十六進(jìn)一。在十六進(jìn)制中,這16個(gè)數(shù)字分別是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。即9的下一位不是10,而是A,10這個(gè)數(shù)只是十進(jìn)制的衍生物,這一點(diǎn)大家要注意!
同理,在十六進(jìn)制中,19的下一位不是20,而是1A,1F的下一位才是20;99的下一位是9A,F(xiàn)F的下一位才是100。
6. 原碼、反碼與補(bǔ)碼
6.1 原碼
對一個(gè)正整數(shù)來說,所謂的原碼,就是指一個(gè)整數(shù)對應(yīng)的二進(jìn)制,比如整數(shù)10的原碼就是00001010。所以原碼就是一個(gè)正整數(shù)原本對應(yīng)的二進(jìn)制形式。但負(fù)數(shù)的原碼和正數(shù)卻不一樣,負(fù)數(shù)的原碼要將正數(shù)原碼的符號位(最高位)改為1,比如-10的原碼就是10001010。
6.2 反碼
正數(shù)的反碼就是其原碼,即正數(shù)的原碼和反碼完全相同。而負(fù)數(shù)的反碼則是將原碼中除符號位以外的所有位(數(shù)值位)都取反,即 0 變成 1,1 變成 0。如10的原碼和反碼都是00001010,而-10的原碼是10001010,反碼則是11110101。
6.3 補(bǔ)碼
正數(shù)的補(bǔ)碼就是其原碼,所以正數(shù)的原碼、反碼、補(bǔ)碼都相同。而負(fù)數(shù)的補(bǔ)碼是其反碼加1,-10的原碼是10001010,反碼則是11110101,補(bǔ)碼則是11110110。我們可以認(rèn)為,補(bǔ)碼是在反碼的基礎(chǔ)上打了一個(gè)補(bǔ)丁,進(jìn)行了一點(diǎn)修正,所以叫做“補(bǔ)碼”。
所以原碼、反碼、補(bǔ)碼的概念只對負(fù)數(shù)有實(shí)際意義,對于正數(shù)來說,原碼、反碼、補(bǔ)碼其實(shí)都是一樣的,如下圖所示:
7.作用
在Java中,進(jìn)制轉(zhuǎn)換可以用來在不同的進(jìn)制之間轉(zhuǎn)換數(shù)字。以下是一些進(jìn)制轉(zhuǎn)換的應(yīng)用:
1.二進(jìn)制和十六進(jìn)制是計(jì)算機(jī)中常用的數(shù)字表示方法。轉(zhuǎn)換為這些進(jìn)制可以方便地表示和處理二進(jìn)制和十六進(jìn)制數(shù)據(jù)。
2.進(jìn)制轉(zhuǎn)換也是密碼學(xué)中的重要概念。例如,在加密和解密過程中,需要將數(shù)字轉(zhuǎn)換為不同的進(jìn)制,以實(shí)現(xiàn)安全傳輸和存儲。
3.在算法和數(shù)據(jù)結(jié)構(gòu)中,進(jìn)制轉(zhuǎn)換也很常見。例如,將一個(gè)數(shù)字轉(zhuǎn)換為二進(jìn)制可以方便地實(shí)現(xiàn)位運(yùn)算,這在許多算法中都有用。
4.進(jìn)制轉(zhuǎn)換還可以用于顯示數(shù)字。例如,在編寫計(jì)算機(jī)程序時(shí),需要將數(shù)字轉(zhuǎn)換為字符串,并以不同的進(jìn)制進(jìn)行顯示。
5.進(jìn)制轉(zhuǎn)換是計(jì)算機(jī)科學(xué)的基礎(chǔ)知識之一,對于理解計(jì)算機(jī)的工作原理也是很有幫助的。