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,得到反码,然后最高位不变,其余位按位取反,得到原码,再将其转化成十进制输出。



你可能感兴趣的:(C语言)