乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      程序中數(shù)值的表示方法

       草珊瑚 2009-08-24
                      一,八進(jìn)制數(shù)

           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í)的C與C++語(yǔ)言的數(shù)值表達(dá)的第二種進(jìn)制法。 
          現(xiàn)在,對(duì)于同樣一個(gè)數(shù),比如是100,我們?cè)诖a中可以用平常的10進(jìn)制表達(dá),例如在變量初始化時(shí):
      int a = 100;

      我們也可以這樣寫:

      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á)法。 

           八進(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)寫成 '\077',但因?yàn)镃,C++規(guī)定不允許使用斜杠加10進(jìn)制數(shù)來(lái)表示字符,所以這里的0可以不寫。

           事實(shí)上我們很少在實(shí)際編程中非要用轉(zhuǎn)義符加八進(jìn)制數(shù)來(lái)表示一個(gè)字符,所以,這里大家僅僅了解就行。

       

               二,十六進(jìn)制數(shù)
           如果不使用特殊的書寫形式,16進(jìn)制數(shù)也會(huì)和10進(jìn)制相混。隨便一個(gè)數(shù):9876,就看不出它是16進(jìn)制或10進(jìn)制。
           C,C++規(guī)定,16進(jìn)制數(shù)必須以 0x開頭。比如 0x1表示一個(gè)16進(jìn)制數(shù)。而1則表示一個(gè)十進(jìn)制。另外如:0xff,0xFF,0X102A,等等。其中的x也不區(qū)分大小寫。(注意:0x中的0是數(shù)字0,而不是字母O)

      以下是一些用法示例:

      int a = 0x100F;

      int b = 0x70 + a;

      至此,我們學(xué)完了所有進(jìn)制:10進(jìn)制,8進(jìn)制,16進(jìn)制數(shù)的表達(dá)方式。最后一點(diǎn)很重要,C/C++中,10進(jìn)制數(shù)有正負(fù)之分,比如12表示正12,而-12表示負(fù)12,;但8進(jìn)制和16進(jìn)制只能用于表達(dá)無(wú)符號(hào)的正整數(shù),如果你在代碼中里:-078,或者寫:-0xF2,C,C++并不把它當(dāng)成一個(gè)負(fù)數(shù)。



               十六進(jìn)制數(shù)在轉(zhuǎn)義符中的使用 
               轉(zhuǎn)義符也可以接一個(gè)16進(jìn)制數(shù)來(lái)表示一個(gè)字符。如在6.2.4小節(jié)中說(shuō)的 '?' 字符,可以有以下表達(dá)方式:

      '?' //直接輸入字符

      '\77' //用八進(jìn)制,此時(shí)可以省略開頭的0

      '\0x3F' //用十六進(jìn)制

      同樣,這一小節(jié)只用于了解。除了空字符用八進(jìn)制數(shù) '\0' 表示以外,我們很少用后兩種方法表示一個(gè)字符。

       

            三,原碼、反碼、補(bǔ)碼
            結(jié)束了各種進(jìn)制的轉(zhuǎn)換,我們來(lái)談?wù)劻硪粋€(gè)話題:原碼、反碼、補(bǔ)碼。 我們已經(jīng)知道計(jì)算機(jī)中,所有數(shù)據(jù)最終都是使用二進(jìn)制數(shù)表達(dá)。 我們也已經(jīng)學(xué)會(huì)如何將一個(gè)10進(jìn)制數(shù)如何轉(zhuǎn)換為二進(jìn)制數(shù)。
            不過(guò),我們?nèi)匀粵](méi)有學(xué)習(xí)一個(gè)負(fù)數(shù)如何用二進(jìn)制表達(dá)。
            比如,假設(shè)有一 int 類型的數(shù),值為5,那么,我們知道它在計(jì)算機(jī)中表示為:
      00000000 00000000 00000000 00000101
      5轉(zhuǎn)換成二進(jìn)制是101,不過(guò)int類型的數(shù)占用4字節(jié)(32位),所以前面填了一堆0。
      現(xiàn)在想知道,-5在計(jì)算機(jī)中如何表示?
      在計(jì)算機(jī)中,負(fù)數(shù)以其正值的補(bǔ)碼形式表達(dá)。

      什么叫補(bǔ)碼呢?這得從原碼,反碼說(shuō)起。

      原碼:一個(gè)整數(shù),按照絕對(duì)值大小轉(zhuǎn)換成的二進(jìn)制數(shù),稱為原碼。
      比如 00000000 00000000 00000000 00000101 是 5的 原碼。
      反碼:將二進(jìn)制數(shù)按位取反,所得的新二進(jìn)制數(shù)稱為原二進(jìn)制數(shù)的反碼。
      取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)

      比如:將00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。

      稱:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反碼。

      反碼是相互的,所以也可稱:
      11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互為反碼。

      補(bǔ)碼:反碼加1稱為補(bǔ)碼。

      也就是說(shuō),要得到一個(gè)數(shù)的補(bǔ)碼,先得到反碼,然后將反碼加上1,所得數(shù)稱為補(bǔ)碼。

      比如:00000000 00000000 00000000 00000101 的反碼是:11111111 11111111 11111111 11111010。

      那么,補(bǔ)碼為:
      11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
      所以,-5 在計(jì)算機(jī)中表達(dá)為:11111111 11111111 11111111 11111011。轉(zhuǎn)換為十六進(jìn)制:0xFFFFFFFB。
      再舉一例,我們來(lái)看整數(shù)-1在計(jì)算機(jī)中如何表示。

      假設(shè)這也是一個(gè)int類型,那么:
      1、先取1的原碼:00000000 00000000 00000000 00000001

      2、得反碼: 11111111 11111111 11111111 11111110

      3、得補(bǔ)碼: 11111111 11111111 11111111 11111111
      可見(jiàn),-1在計(jì)算機(jī)里用二進(jìn)制表達(dá)就是全1。16進(jìn)制為:0xFFFFFF。
      一切都是紙上說(shuō)的……說(shuō)-1在計(jì)算機(jī)里表達(dá)為0xFFFFFF,我能不能親眼看一看呢?當(dāng)然可以。利用C++ Builder的調(diào)試功能,我們可以看到每個(gè)變量的16進(jìn)制值。


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多