官术网_书友最值得收藏!

1.8 處理二進制數的簡單方法

眾所周知,長時間對著顯示器處理二進制數會有失明的危險,它會讓人視覺疲勞!人們想出了一些讓二進制數字更容易閱讀的方法。下面將介紹其中的幾種方法。

1.8.1 八進制表示法

其中一個節約用眼的方法是八進制表示法。八進制的意思是底數為8,而八進制表示法背后的思想是將3位當作一組。3位可以用來表示23,或者表示0~7的8個值。假設有一些巨大的二進制數,比如100101110001010100。這個數讀起來很傷眼睛。圖1-14展示了如何把二進制數轉化為八進制表示。

圖1-14 二進制數的八進制表示

如你所見,我們將位分組,每組3位,并將八進制值分配給每一組,得到456124,這樣讀起來就簡便多了。要得到100的八進制值,只需簡單地將其作為二進制數來處理:(1×22)+(0×21)+(0×20)= 4。

1.8.2 十六進制表示法

八進制表示法現在仍在使用,但沒有過去那么廣泛了。十六進制表示法(底數為16)已經基本取代了八進制表示法,因為現在的計算機都是以8位的倍數為單位,可以整除4,但不可以整除3。

將我們熟悉的十進制數字中的一些符號轉換為二進制很容易,因為只需要其中的0和1。對于八進制,只需要10個數字中的8個。但是對于十六進制,需要16個,這比我們現有的10個數字要多。我們需要一些符號來代表10~15。我們假設符號a、b、c、d、e、f(或A、B、C、D、E、F)分別代表10~15。假設有一個可怕的二進制數,比如11010011111111000001,圖1-15顯示了如何將其轉換為十六進制。

圖1-15 二進制數的十六進制表示

在這個例子中,我們把4個位作為一組,然后將16個符號值(0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f)中的一個分配給每一組。例如,1101(第一個4位的組)在十六進制中將用d表示,因為它的值為十進制1×(23)+1×(22)+0×(21)+1×(20) = 13,而d代表數字13。將下一個4位的組映射到另一個符號,以此類推。最終11010011111111000001轉換為十六進制中的d3fc1。表1-9展示了便捷的十六進制值列表,你可以參考這些值,直到它刻在你的腦海里。

表1-9 二進制數與十六進制數的轉化

1.8.3 表示語境

怎么知道該如何解釋一個數字?比如數字10,如果是二進制數,那么就是2;如果是八進制數,那么就是8;如果是十進制數,那么就是10;如果是十六進制數,那么就是16。數學書上使用下標進行區分,所以我們可以寫為102、108、1010或1016,但是用電腦鍵盤輸入下標很不方便。如果能有一個一致的記號就好了,但悲哀的是,很多人認為自己有更好的方法,因而會自己發明新的記號,于是我們曾使用過一堆記號。許多計算機編程語言都使用了以下記號法:

  • 以0開頭的數字表示八進制數,例如017。
  • 以1~9開頭的數字表示十進制數,例如123。
  • 以0x為前綴的數字表示十六進制數,例如0x12f。

請注意,我們無法區分八進制0和十進制0,但是這并不重要,因為八進制0和十進制0是相同的。很少有編程語言有二進制的記號,因為它確實不怎么使用了,而且往往可以從語境判斷。有些語言,如C++,用0b前綴來表示二進制數。

主站蜘蛛池模板: 志丹县| 房产| 临漳县| 密云县| 中超| 周至县| 固原市| 峨边| 昌江| 斗六市| 台州市| 邵东县| 恩平市| 德安县| 扶绥县| 郧西县| 德清县| 海安县| 蓝田县| 克山县| 连山| 皋兰县| 唐河县| 长海县| 西吉县| 钟祥市| 静乐县| 旺苍县| 简阳市| 繁昌县| 景洪市| 象山县| 新田县| 金坛市| 洛南县| 镇赉县| 东乡县| 营山县| 和田市| 盱眙县| 黄浦区|