• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            cc

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              38 隨筆 :: 14 文章 :: 21 評論 :: 0 Trackbacks
            大家都知道數(shù)據(jù)在計算機中都是按字節(jié)來儲存了,1個字節(jié)等于8位(1Byte=8bit),而計算機只能識別0和1這兩個數(shù),所以根據(jù)排列,1個字節(jié)能代表256種不同的信息,即28(0和1兩種可能,8位排列),比如定義一個字節(jié)大小的無符號整數(shù)(unsigned char),那么它能表示的是0~255(0~28-1)這些數(shù),一共是256個數(shù),因為,前面說了,一個字節(jié)只能表示256種不同的信息。別停下,還是一個字節(jié)的無符號整數(shù),我們來進一步剖析它,0是這些數(shù)中最小的一個,我們先假設它在計算機內(nèi)部就用8位二進制表示為00000000(從理論上來說也可以表示成其他不同的二進制碼,只要這256個數(shù)每個數(shù)對應的二進制碼都不相同就可以了),再假設1表示為00000001,2表示為00000010,3 表示為00000011,依次類推,那么最大的那個數(shù)255在8位二進制中就表示為最大的數(shù)11111111,然后,我們把這些二進制碼換算成十進制看看,會發(fā)現(xiàn)剛好和我們假設的數(shù)是相同的,而事實上,在計算機中,無符號的整數(shù)就是按這個原理來儲存的,所以告訴你一個無符號的整數(shù)的二進制碼,你就可以知道這個數(shù)是多少,而且知道在計算機中,這個數(shù)本身就是以這個二進制碼來儲存的。比如我給你一個2個字節(jié)大小的二進制碼,首先聲明它表示的是無符號的整數(shù): 00000000 00000010,我們把前面的0省略,換算一下,它表示的也是數(shù)值2,和前面不同的是,它占了2個字節(jié)的內(nèi)存。不同的類型占的內(nèi)存空間不同,如在我的電腦中char是1個字節(jié),int是4個字節(jié),long是8個字節(jié)(你的可能不同,這取決于不同的計算機設置),它們的不同之處僅僅是內(nèi)存大的能表示的不同的信息多些,也就是能表示的數(shù)范圍更大些(unsigned int能表示的范圍是0~28*4-1),至于怎么算,其實都是一樣的,直接把二進制與十進制相互轉(zhuǎn)換,二進制就是它在計算機中的樣子,十進制就是我們所表示的數(shù)。啊哈,原來這些都是可以計算的呀,我曾經(jīng)還以為不同的計算機儲存的原理是不同的,取決于商家的喜好呢,呵呵。說了這么多怎么還沒有提到原碼、反碼和補碼呀,別急別急,心急吃不了熱豆腐,呵呵,因為無符號的整數(shù)根本就沒有原碼、反碼和補碼。(啊,那不是被欺騙了,5555````我告訴媽媽去,哥哥欺負我)都說了別急嘛,你就不想想我說了這么半天的無符號整數(shù),那么有符號的整數(shù)怎么辦啊?

            呵呵,對,只有有符號的整數(shù)才有原碼、反碼和補碼的!其他的類型一概沒有。雖然我們也可以用二進制中最小的數(shù)去對應最小的負數(shù),最大的也相對應,但是那樣不科學,下面來說說科學的方法。還是說一個字節(jié)的整數(shù),不過這次是有符號的啦,1個字節(jié)它不管怎么樣還是只能表示256個數(shù),因為有符號所以我們就把它表示成范圍:-128-127。它在計算機中是怎么儲存的呢?可以這樣理解,用最高位表示符號位,如果是0表示正數(shù),如果是1表示負數(shù),剩下的7位用來儲存數(shù)的絕對值的話,能表示27個數(shù)的絕對值,再考慮正負兩種情況,27*2還是256個數(shù)。首先定義0在計算機中儲存為00000000,對于正數(shù)我們依然可以像無符號數(shù)那樣換算,從00000001到01111111依次表示1到127。那么這些數(shù)對應的二進制碼就是這些數(shù)的原碼。到這里很多人就會想,那負數(shù)是不是從10000001到11111111依次表示-1到-127,那你發(fā)現(xiàn)沒有,如果這樣的話那么一共就只有255個數(shù)了,因為10000000 的情況沒有考慮在內(nèi)。實際上,10000000在計算機中表示最小的負整數(shù),就是這里的-128,而且實際上并不是從10000001到11111111 依次表示-1到-127,而是剛好相反的,從10000001到11111111依次表示-127到-1。負整數(shù)在計算機中是以補碼形式儲存的,補碼是怎么樣表示的呢,這里還要引入另一個概念——反碼,所謂反碼就是把負數(shù)的原碼(負數(shù)的原碼和和它的絕對值所對應的原碼相同,簡單的說就是絕對值相同的數(shù)原碼相同)各個位按位取反,是1就換成0,是0就換成1,如-1的原碼是00000001,和1的原碼相同,那么-1的反碼就是11111110,而補碼就是在反碼的基礎上加1,即-1的補碼是11111110+1=11111111,因此我們可以算出-1在計算機中是按11111111儲存的。總結(jié)一下,計算機儲存有符號的整數(shù)時,是用該整數(shù)的補碼進行儲存的,0的原碼、補碼都是0,正數(shù)的原碼、補碼可以特殊理解為相同,負數(shù)的補碼是它的反碼加1。下面再多舉幾個例子,來幫助大家理解!

            十進制 → 二進制 (怎么算?要是不知道看計算機基礎的書去)
            47 → 101111

            有符號的整數(shù) 原碼 反碼 補碼
            47 00101111 11010000 00101111(正數(shù)補碼和原碼相同)
            -47 00101111 11010000 11010001(負數(shù)補碼是在反碼上加1)

            再舉個例子,學C語言的同學應該做過這道題:
            把-1以無符號的類型輸出,得什么結(jié)果?(程序如下)

            #include<iostream.h>
            void main()
            {
            short int n=-1;
            cout<<(unsigned short int)n<<endl;
            }

            首先在我的電腦中short int類型的儲存空間是2個字節(jié),你的可能不同,我說過,這取決于你的計算機配置。它能儲存28*2=65536個不同的數(shù)據(jù)信息,如果是無符號那么它的范圍是0~65535(0~216-1),如果是有符號,那么它的范圍是-32768~32767(-215~215-1)。這道題目中,開始n是一個有符號的短整型變量,我們給它賦值為-1,根據(jù)我們前面所說的,它在計算機中是以補碼11111111 11111111儲存的,注意前面說了是2個字節(jié)。如果把它強制為無符號的短整型輸出的話,那么我們就把剛才的二進制把看成無符號的整型在計算機中儲存的形式,對待無符號的整型就沒有什么原碼、反碼和補碼的概念了,直接把11111111 11111111轉(zhuǎn)化成十進制就是65535,其實我們一看都是一就知道它是范圍中最大的一個數(shù)了。呵呵,就這么簡單。你個把上面的源代碼編譯運行看看,如果你的電腦short int也是兩個字節(jié),那就會和我得一樣的結(jié)果。你可以先用這個語句看看:cout<<sizeof(short int)<<endl;看看你的電腦里的短整型占多少的儲存空間,也可以用sizeof來看其它任何類型所分配的儲存空間。

            最后提醒一句,關(guān)于數(shù)據(jù)如何在計算機中儲存的,這里只適用于整型的數(shù)據(jù),對于浮點型的是另一種方式,這里我們暫時就不深究了
            posted on 2010-03-17 01:16 醒目西西 閱讀(270) 評論(0)  編輯 收藏 引用
            99久久做夜夜爱天天做精品| 久久免费视频6| 久久亚洲国产午夜精品理论片| 久久66热人妻偷产精品9| 国产精品久久永久免费| 亚洲美日韩Av中文字幕无码久久久妻妇 | 国产精品免费久久| 久久久久久综合网天天| 精品国产乱码久久久久久1区2区 | 久久国产精品成人免费| 国产精品免费看久久久香蕉| 伊人久久大香线蕉av一区| 91性高湖久久久久| 日产精品久久久久久久性色| 国产综合免费精品久久久| 久久夜色精品国产噜噜噜亚洲AV| 久久狠狠一本精品综合网| 精品久久久久久成人AV| 久久人妻AV中文字幕| 久久精品国产一区二区电影| 国产精品久久99| 麻豆亚洲AV永久无码精品久久| 久久综合久久鬼色| 国产视频久久| 狠狠人妻久久久久久综合蜜桃 | 亚洲精品国产字幕久久不卡| 久久黄视频| 亚洲综合精品香蕉久久网97| 久久亚洲日韩精品一区二区三区 | 一级做a爰片久久毛片看看| 久久国产精品视频| a级毛片无码兔费真人久久| 97久久精品午夜一区二区| 久久精品国产亚洲77777| 久久国产乱子伦免费精品| 精品久久久噜噜噜久久久| 久久久久人妻一区精品色| 97久久超碰成人精品网站| 99久久人妻无码精品系列| 97久久久精品综合88久久| 久久久久亚洲精品天堂|