二進(jìn)制、八進(jìn)制、十六進(jìn)制4

字號(hào):

6.2.3 八進(jìn)制數(shù)的表達(dá)方法
    C,C++語(yǔ)言中,如何表達(dá)一個(gè)八進(jìn)制數(shù)呢?如果這個(gè)數(shù)是 876,我們可以斷定它不是八進(jìn)制數(shù),因?yàn)榘诉M(jìn)制數(shù)中不可能出7以上的阿拉伯?dāng)?shù)字。但如果這個(gè)數(shù)是123、是567,或12345670,那么它是八進(jìn)制數(shù)還是10進(jìn)制數(shù),都有可能。
    所以,C,C++規(guī)定,一個(gè)數(shù)如果要指明它采用八進(jìn)制,必須在它前面加上一個(gè)0,如:123是十進(jìn)制,但0123則表示采用八進(jìn)制。這就是八進(jìn)制數(shù)在C、C++中的表達(dá)方法。
    由于C和C++都沒(méi)有提供二進(jìn)制數(shù)的表達(dá)方法,所以,這里所學(xué)的八進(jìn)制是我們學(xué)習(xí)的,CtC++語(yǔ)言的數(shù)值表達(dá)的第二種進(jìn)制法。
    現(xiàn)在,對(duì)于同樣一個(gè)數(shù),比如是100,我們?cè)诖a中可以用平常的10進(jìn)制表達(dá),例如在變量初始化時(shí):
    int a = 100;
    我們也可以這樣寫(xiě):
    int a = 0144; //0144是八進(jìn)制的100;一個(gè)10進(jìn)制數(shù)如何轉(zhuǎn)成8進(jìn)制,我們后面會(huì)學(xué)到。
    千萬(wàn)記住,用八進(jìn)制表達(dá)時(shí),你不能少了最前的那個(gè)0。否則計(jì)算機(jī)會(huì)通通當(dāng)成10進(jìn)制。不過(guò),有一個(gè)地方使用八進(jìn)制數(shù)時(shí),卻不能使用加0,那就是我們前面學(xué)的用于表達(dá)字符的“轉(zhuǎn)義符”表達(dá)法。
    6.2.4 八進(jìn)制數(shù)在轉(zhuǎn)義符中的使用
    我們學(xué)過(guò)用一個(gè)轉(zhuǎn)義符'\'加上一個(gè)特殊字母來(lái)表示某個(gè)字符的方法,如:'\n'表示換行(line),而'\t'表示Tab字符,'\''則表示單引號(hào)。今天我們又學(xué)習(xí)了一種使用轉(zhuǎn)義符的方法:轉(zhuǎn)義符'\'后面接一個(gè)八進(jìn)制數(shù),用于表示ASCII碼等于該值的字符。
    比如,查一下第5章中的ASCII碼表,我們找到問(wèn)號(hào)字符(?)的ASCII值是63,那么我們可以把它轉(zhuǎn)換為八進(jìn)值:77,然后用 '\77'來(lái)表示'?'。由于是八進(jìn)制,所以本應(yīng)寫(xiě)成 '\077',但因?yàn)镃,C++規(guī)定不允許使用斜杠加10進(jìn)制數(shù)來(lái)表示字符,所以這里的0可以不寫(xiě)。
    事實(shí)上我們很少在實(shí)際編程中非要用轉(zhuǎn)義符加八進(jìn)制數(shù)來(lái)表示一個(gè)字符,所以,6.2.4小節(jié)的內(nèi)容,大家僅僅了解就行。