1. 程式人生 > >C語言中整型在計算機中的儲存

C語言中整型在計算機中的儲存

一 . 整型的表示

      1.字面值後面加上L(l)表示long長整型

      2.字面值後面加上U(u)表示usigned整型值

      3.十進位制123  ...

      4.八進位制,以0開頭,如0123,0754  ...

      5.十六進位制,以0x開頭,如0xF32  ...

二 .整型的分類和表示範圍

    char型,前一篇文章已經說過,在此不再熬述

    int :是有符號還是無符號的整型,在不同的編譯器中不同,這裡統一把它視為有符號的整型進行討論

             不論在32位還是64位機器中均是4個位元組(32個bit位),所以其最高位表示符號位(0正1負),剩下的31個位表示資料位,取值範圍是-2147 483 648-2147 483 647(-2^31---2^31-1)。在《字元型在計算機中的儲存》中講到正0和負0,這裡也不再熬述。

    signed int :4個位元組,和int一樣

    unsigned int :4個位元組,32個bit位全部為資料位,表示的範圍是0---2^32-1

    short 和unsigned short:32位機器和64位機器中均為2個位元組,用同樣的方法可以表示取值範圍

    long 和 unsigned long:32位機器中位4個位元組,64位機器中位8個位元組

    long long 和unsigned long long :32位機器中為8個位元組,64位機器中為8個位元組

三 . 整型的儲存和讀取

    1.整型儲存:整型在計算機中是以補碼的形式儲存的,當計算機遇到一個十進位制整型數字時,首先將其轉化成二進位制(原碼),接著最高位不變,其餘位按位取反(反碼),然後再加1(補碼)。而正數的原碼反碼補碼相同

    2.整型讀取:首先會根據讀取要求,如果要求讀取無符號數,因為無符號數是非負的,則直接將資料當成原碼,把它轉化成十進位制整數。

       如果要求讀取有符號數,則首先將得到的資料(補碼)減去1,得到反碼,然後最高位不變,其餘位按位取反,得到原碼,再將其轉化成十進位制輸出。