2014-03-12 45 views
0

例如,以下語句如何相互對等?C整數文字如何工作?

一)0116 = 0x4E

B)97 = 00141 = 0x0061

C)45 = 0x2d = 0055

我用盡尋找它,但它仍然沒有任何意義,我。謝謝。

+3

以'0'開頭的數字是八進制數字。 – ouah

+1

http://en.cppreference.com/w/cpp/language/integer_literal –

+0

將每個數字轉換爲二進制。 –

回答

5

如果它以0x0X或開始時,它是一個十六進制數,即,。基地16

否則,如果它只有0開始,這是一個八進制數,即。基地8

否則它是一個十進制數,即。基座10

(以下是非標準 - 一個gcc擴展)

如果它與0b開始,它是一個二進制數,即,。基地2

+1

C和C++沒有二進制整數文字(尚)。 –

+0

@JoachimPileborg gcc支持'0b' http://gcc.gnu.org/onlinedocs/gcc/Binary-constants.html 不知道c標準是否同意 –

+0

謝謝!我不明白,如果它從0開始,它是基數8.我只是假設它仍然是基數10. – user3277606

0

數從0開始的八進制數 以0x開頭數字是十六進制

我們需要兩個不同的數字系統之間和編程來區分,我們做這樣

,如果你想驗證這些等式你可以自己解決,也可以使用在線轉換器。我給你下面開始用0

http://calc.50x.eu/

+0

是的,這意味着'0'是一個八進制文字,而不是十進制。 (這並不重要;它具有與小數相同的值。) –

+0

是將它從八進制轉換爲十進制,我們得到正確的值 – Sahil

0

數字鏈接是八進制。在八進制0和7之間計數八進制數字雲:
0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, ...

編號與0x0X或開始是十六進制的(十六進制)。十六進制使用數字和alpha值。計數十六進制雲:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, ...

因此,如何爲0116 == 0x4E ?

C編譯器會在0116中看到0,並知道將該數字中斷爲八進制。編譯器可以檢查不同的數字系統,因爲我們大多數人需要將它們轉換爲我們可以更好理解的東西。

轉換八進制轉換爲十進制可以做爲Σ(對於i = 0到n)的函數:一個x8的我。在您的示例:
的1x8 = 64
的1x8 = 8
6×8 = 6
64 + 8 + 6 = 78

轉換十六進制到十進制可以是使用幾乎相同的公式完成,但您需要將每個字母轉換爲一個 i的一部分:a i x16 i
4X16 = 64
14x16 = 14 //Ë == 14
64 + 14 = 78 10

顯然78 == 78,compilter只是不需要先進行轉換即可看到。