1. 程式人生 > >為什麼需要八進位制和十六進位制? 十六進位制的意義何在?

為什麼需要八進位制和十六進位制? 十六進位制的意義何在?

程式設計中,我們常用的還是10進位制.畢竟C/C++是高階語言。   

比如:int a = 100,b = 99;   

不過,由於資料在計算機中的表示,最終以二進位制的形式存在,所以有時候使用二進位制,可以更直觀地解決 問題。但二進位制數太長了。比如int 型別佔用4個位元組,32位。比如100,用int型別的二進位制數表達將是:   

0000 0000 0000 0000 0110 0100   

面對這麼長的數進行思考或操作,沒有人會喜歡。因此,C,C++ 沒有提供在程式碼直接寫二進位制數的方法。用16進位制或8進位制可以解決這個問題。因為,進位制越大,數的表達長度也就越短。

不過,為什麼偏偏是16或8進位制,而不其它的,諸如9或20進位制呢?2、8、16,分別是2的1次方,3次方,4次方。這一點使得三種進位制之間可以非常直接地互相轉換。8進位制或16進位制縮短了二進位制數,但保持了二進位制數的表達特點。
 

十六進位制的意義:
1.用於計算機領域的一種重要的數制   

2.對計算機理論的描述,計算機硬體電路的設計都是很有益的。比如邏輯電路設計中,既要考慮功能的完備,還要考慮用盡可能少的硬體,十六進位制就能起到一些理論分析的作用。比如四位二進位制電路,最多就是十六種狀態,也就是一種十六進位制形式,只有這十六種狀態都被用上了或者儘可能多的被用上,硬體資源才發揮了儘可能大的作用。   

3.十六進位制更簡短,因為換算的時候一位16進位制數可以頂4位2進位制數。

十六進位制的表示:
C語言、Shell、Python語言及其他相近的語言使用字首“0x”,例如“0x5A3”。開頭的“0”令解析器更易辨認數,而“x”則代表十六進位制(就如“O”代表八進位制)。在“0x”中的“x”可以大寫或小寫。

然後再說記憶體:

一個記憶體地址存著一個對應的值, 記憶體就相當於(addr,val)的大hash表,c語句的語義基本就是改變hash值。

如 int i = 3; 
假設 i的記憶體地址為 0x8049320 ,那麼這句話的語義是0x8049320 = 3,經過i = 3後,i為(0x8049320,3)

int b = i;
假設 b的記憶體地址為 0x8049324 ,那麼這句話的語義是0x8049324 = i對應的val = 3,此時b為(0x8049324,3)