程式設計中,我們常用的還是10進製.畢竟c/c++是高階語言。
比如:int a = 100,b = 99;
不過,由於資料在計算機中的表示,最終以二進位制的形式存在,所以有時候使用二進位制,可以更直觀地解決 問題。但二進位制數太長了。比如int 型別占用4個位元組,32位。比如100,用int型別的二進位制數表達將是:
0000 0000 0000 0000 0110 0100
不過,為什麼偏偏是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)
八進位制 十六進製制,補碼
為什麼需要八進位制和十六進製制?程式設計中,我們常用的還是10進製 必竟c c 是高階語言。比如 int a 100,b 99 不過,由於資料在計算機中的表示,最終以二進位制的形式存在,所以有時候使用二進位制,可以更直觀地解決問題。但,二進位制數太長了。比如int 型別占用4個位元組,32位。比如1...
十六進製制轉八進位制
時間限制 1.0s 記憶體限制 512.0mb 問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由0 9 大寫字母a f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出格式 輸...
十六進製制轉八進位制
問題描述 給定n 個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來 n行,每行乙個由 0 9 大寫字母 a f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過 100000 輸出格式 輸出n 行,每行為輸入對應的八進位制正整...