美文网首页
浅谈计算机中数据存储

浅谈计算机中数据存储

作者: DouQing | 来源:发表于2016-11-30 23:09 被阅读0次

    我们都知道在计算机内部数据的存储和运算都采用二进制,这是因为计算机是由很多晶体管组成,而晶体管只有两种状态,恰好可以用二进制的0和1表示,并且采用二进制可以使得计算机内部的运算规则简单,稳定性高。

    在计算机有整数实数,而两者在计算机中以二进制存储的规则又是大不相同的。

    整数

    计算机中将整数又分为无符号整数(unsigned)和有符号整数(signed)。
    对于无符号整数而言,它的原码,反码,补码都是相同的,直接采用其二进制形式表示即可。
    对与有符号整数而言,规定取最高位作为其符号位,若最高位为0表示正数,否则为负数,它的原码,反码,补码之间的关系是:反码等于原码除符号位全部取反;补码等于反码+1

    计算机中整数是以补码形式进行存储的

    原因有下:

    • 能够统一 +0 和 -0 的表示
    • 对于有符号整数的运算能够把符号位同数值位为一起处理
    • 能够简化运算规则

    只有用补码表示,+0和-0的表示形式才一致。正因为如此,所以补码的表示范围比原码和反码表示的范围都要大,比如8byte用补码能够表示的范围为-128127,0127分别用0000000001111111来表示,而-127-1则用1000000111111111来表示,多出的10000000则用来表示-128。因此对于任何一个n位的二进制,假若表示带符号的整数,其表示范围为-2^(n-1)2^(n-1)-1。

    实数

    目前所有c编译器都采用IEEE所制定的标准浮点格式,即二进制科学表示法存储实数。

    二进制科学表示法的公式为:S=M*2^N ,主要由三部分构成:符号位+阶码(N)+尾数(M)。对于float型数据,其二进制有32位,其中符号位1位,阶码8位,尾数23位;对于double型数据,其二进制为64位,符号位1位,阶码11位,尾数52位。

    下面举例说明:

    float型数据125.5转换为标准浮点格式

    125二进制表示形式为1111101,小数部分表示为二进制为 1,则125.5二进制表示为1111101.1,由于规定尾数的整数部分恒为1,则表示为1.1111011*2^6,阶码为6,加上127为133,则表示为10000101,而对于尾数将整数部分1去掉,为1111011,在其后面补0使其位数达到23位,则为11110110000000000000000

    则其二进制表示形式为

    0 10000101 11110110000000000000000

    double类型也是使用相同的方法转换。

    相关文章

      网友评论

          本文标题:浅谈计算机中数据存储

          本文链接:https://www.haomeiwen.com/subject/fqqtmttx.html