- 零基礎(chǔ)學(xué)Java程序設(shè)計(jì)
- 祝明慧編著
- 1945字
- 2022-05-06 19:55:56
2.2.1 進(jìn)制表示

進(jìn)制是一種計(jì)數(shù)方式。它決定了數(shù)字的書寫方式及進(jìn)位方式。由于計(jì)算機(jī)和人類在計(jì)數(shù)方式上存在很大差異,所以Java語言支持多種進(jìn)制的表達(dá)形式。下面將依次講解這些進(jìn)制。
1.二進(jìn)制
二進(jìn)制是計(jì)算機(jī)默認(rèn)的計(jì)數(shù)方式。計(jì)算機(jī)處理的數(shù)據(jù)都會轉(zhuǎn)化為二進(jìn)制。為了方便程序員處理底層相關(guān)的一些數(shù)據(jù),Java語言支持二進(jìn)制整數(shù)的表示方法。在Java語言中,每個二進(jìn)制數(shù)都由0B/0b開始,后面的每位為0或1。形式如圖2.2所示。

圖2.2 二進(jìn)制的構(gòu)成形式
助記:0B/0b中的B/b是二進(jìn)制的英文單詞Binary/binary的首字母,其發(fā)音為['ba?n?ri]。
【示例2-1】下面將在代碼中使用二進(jìn)制。代碼如下:

運(yùn)行結(jié)果如下:

注意:二進(jìn)制的書寫方式只在Java 7及其之后的版本中支持。
2.八進(jìn)制
在測量長度時,人們常使用單位米。如果要測量一個城市到另一個城市之間的距離,使用米這個單位來計(jì)算就太小了,此時就需要使用千米進(jìn)行計(jì)算。對于二進(jìn)制也一樣,當(dāng)值太大的時候,用二進(jìn)制表示的話,數(shù)值位數(shù)就太多了。這時,就需要使用八進(jìn)制。八進(jìn)制是將3位二進(jìn)制合并轉(zhuǎn)化為1位。在Java語言中,每個八進(jìn)制數(shù)都由0開始,后面的每位為0~7。構(gòu)成形式如圖2.3所示。

圖2.3 八進(jìn)制的構(gòu)成形式
【示例2-2】下面將在代碼中表示一個八進(jìn)制數(shù)010。代碼如下:

運(yùn)行結(jié)果如下:

注意:%o是printf的格式符,用來顯示八進(jìn)制數(shù)。
助記:o是八進(jìn)制的英文單詞octal的首字母,其發(fā)音為['?ktl]。
注意:如果想為八進(jìn)制數(shù)輸出前綴,可在%后面添加#標(biāo)記,如以下代碼:

運(yùn)行結(jié)果如下:

米和千米之間可以進(jìn)行相互轉(zhuǎn)化。在計(jì)算機(jī)中也不例外,八進(jìn)制和二進(jìn)制也可以進(jìn)行相互轉(zhuǎn)化。下面將依次講解兩者的轉(zhuǎn)化方式。
(1)八進(jìn)制轉(zhuǎn)化為二進(jìn)制:轉(zhuǎn)化規(guī)則是將八進(jìn)制的1位轉(zhuǎn)化為二進(jìn)制的3位,運(yùn)算順序是從低位向高位依次進(jìn)行。以八進(jìn)制數(shù)57為例,具體轉(zhuǎn)化方式如圖2.4所示。

圖2.4 八進(jìn)制向二進(jìn)制轉(zhuǎn)化
(2)二進(jìn)制轉(zhuǎn)化為八進(jìn)制:轉(zhuǎn)化規(guī)則是將每3位二進(jìn)制轉(zhuǎn)化為1位八進(jìn)制,運(yùn)算順序是從低位向高位依次進(jìn)行。以二進(jìn)制數(shù)101111為例,具體轉(zhuǎn)化方式如圖2.5所示。

圖2.5 二進(jìn)制向八進(jìn)制轉(zhuǎn)化
注意:不是所有的二進(jìn)制數(shù)的位數(shù)都是3的倍數(shù)。如果遇到這種情況,需要使用0進(jìn)行補(bǔ)充。以二進(jìn)制數(shù)1111為例,轉(zhuǎn)化方式如圖2.6所示。

圖2.6 二進(jìn)制向八進(jìn)制轉(zhuǎn)化(補(bǔ)0)
助記:為了快速進(jìn)行二進(jìn)制和八進(jìn)制之間的轉(zhuǎn)化,需要熟記如表2.2所示的轉(zhuǎn)化關(guān)系。
表2.2 二進(jìn)制和八進(jìn)制之間的轉(zhuǎn)化關(guān)系

3.十六進(jìn)制
當(dāng)要計(jì)算地球到太陽之間的距離時,使用千米這樣的單位就有點(diǎn)小了,此時需要使用到光年。在計(jì)算機(jī)中也一樣,在處理更大的數(shù)據(jù)時,八進(jìn)制也會顯得有點(diǎn)小。這時就需要使用十六進(jìn)制。十六進(jìn)制是將4位二進(jìn)制合并為1位。在Java語言中,每個十六進(jìn)制數(shù)都由0X/0x開始,后面的每位為0~9或A~F。構(gòu)成形式如圖2.7所示。

圖2.7 十六進(jìn)制的構(gòu)成形式
助記:0X/0x中的X/x是十六進(jìn)制的英文單詞hexadecimal的第三個字符,其發(fā)音為[?heks??des?ml]。
【示例2-3】下面將在代碼中書寫十六進(jìn)制數(shù)0xA。代碼如下:

運(yùn)行結(jié)果如下:

注意:%x是printf的格式符,用來顯示十六進(jìn)制數(shù)值。
注意:如果想為十六進(jìn)制數(shù)輸出前綴,可在%后面添加#標(biāo)記。
八進(jìn)制和二進(jìn)制可以相互轉(zhuǎn)化,十六進(jìn)制與二進(jìn)制也不例外。下面將講解十六進(jìn)制和二進(jìn)制之間的轉(zhuǎn)化。
(1)十六進(jìn)制轉(zhuǎn)化為二進(jìn)制:轉(zhuǎn)化規(guī)則是將十六進(jìn)制的1位轉(zhuǎn)化成二進(jìn)制的4位,運(yùn)算順序是從低位向高位依次進(jìn)行。以十六進(jìn)制數(shù)F3為例,具體轉(zhuǎn)化方式如圖2.8所示。

圖2.8 十六進(jìn)制向二進(jìn)制轉(zhuǎn)化
(2)二進(jìn)制轉(zhuǎn)化為十六進(jìn)制:轉(zhuǎn)化規(guī)則是將二進(jìn)制的4位轉(zhuǎn)化成十六進(jìn)制的1位,運(yùn)算順序是從低位向高位依次進(jìn)行。以二進(jìn)制數(shù)11110011為例,具體轉(zhuǎn)化方式如圖2.9所示。

圖2.9 二進(jìn)制向十六進(jìn)制轉(zhuǎn)化
注意:類似于二進(jìn)制轉(zhuǎn)化為八進(jìn)制,并不是所有的二進(jìn)制數(shù)的位數(shù)都是4的倍數(shù)。如果遇到這種情況,也需要使用0進(jìn)行補(bǔ)充。以二進(jìn)制數(shù)1110011為例,轉(zhuǎn)化方式如圖2.10所示。

圖2.10 二進(jìn)制向十六進(jìn)制轉(zhuǎn)化(補(bǔ)0)
助記:為了快速進(jìn)行二進(jìn)制和十六進(jìn)制之間的轉(zhuǎn)化,需要熟記如表2.3所示的轉(zhuǎn)化關(guān)系。
表2.3 二進(jìn)制和十六進(jìn)制之間的轉(zhuǎn)化關(guān)系

4.十進(jìn)制
前面講解的二進(jìn)制、八進(jìn)制及十六進(jìn)制都是貼近于計(jì)算機(jī)處理的進(jìn)制類型。對人類來說,十進(jìn)制才是最容易使用的形式。Java語言也支持十進(jìn)制的表示方式。在Java語言中,每個十進(jìn)制整數(shù)都由0~9構(gòu)成。由于八進(jìn)制整數(shù)由0開始,所以十進(jìn)制整數(shù)不能由0開始。
【示例2-4】下面將在代碼中展示一個十進(jìn)制數(shù)13。代碼如下:

運(yùn)行結(jié)果如下:

注意:%d是printf的格式符,用來顯示十進(jìn)制數(shù)值。
助記:d是十進(jìn)制的英文單詞decimal的首字母,其發(fā)音為[?des?ml]。
助記:為了快速進(jìn)行二進(jìn)制和十進(jìn)制之間的轉(zhuǎn)化,需要熟記如表2.4所示的轉(zhuǎn)化關(guān)系。
表2.4 二進(jìn)制和十進(jìn)制之間的轉(zhuǎn)化關(guān)系

5.書寫方式
在閱讀位數(shù)過多的數(shù)字時,為了方便閱讀,可以使用特殊符號將其分隔。例如,書寫電話號碼時會使用空格分隔,如139****5613。這種方式對于計(jì)算機(jī)中的進(jìn)制也不例外。當(dāng)進(jìn)制位數(shù)太多時,為了方便讀取,使用_將其分隔,如0b1010_0101_1011。
- 數(shù)據(jù)庫系統(tǒng)原理及MySQL應(yīng)用教程(第2版)
- LabVIEW 2018 虛擬儀器程序設(shè)計(jì)
- 華為HMS生態(tài)與應(yīng)用開發(fā)實(shí)戰(zhàn)
- C語言程序設(shè)計(jì)實(shí)踐教程
- 網(wǎng)絡(luò)爬蟲原理與實(shí)踐:基于C#語言
- 飛槳PaddlePaddle深度學(xué)習(xí)實(shí)戰(zhàn)
- Python深度學(xué)習(xí):基于TensorFlow
- UVM實(shí)戰(zhàn)
- Oracle GoldenGate 12c Implementer's Guide
- Orleans:構(gòu)建高性能分布式Actor服務(wù)
- App Inventor少兒趣味編程動手做
- Java Web開發(fā)實(shí)例大全(基礎(chǔ)卷) (軟件工程師開發(fā)大系)
- OpenCV Android Programming By Example
- Mudbox 2013 Cookbook
- Arduino電子設(shè)計(jì)實(shí)戰(zhàn)指南:零基礎(chǔ)篇