整数和浮点数在内存中存储

2024-04-30 21:16:48 浏览数 (2)

整数在内存中的存储

        整数的二进制以 原码 反码 补码 表示.

        三种表示方法均有符号位和数值位两部分,符号位用 0 表示正,用 1 表示 负,而数值位最高位的一位是被当作符号位,剩余的都是数值位.

正整数的原 反 补码都相同

负整数的三种表示方法各不相同

        原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码.

        反码:将原码的符号位不变,其他位依次按位取反就可以得到反码.

        补码:反码 1就得到补码

        对于整型来说:数据存放内存就是补码.

例如: 8的存放

        原码:00001000

        反码:00001000

        补码:00001000

          -8的存放

        原码:10001000

        反码:11110111

        补码:11111000

 浮点数在内存中的存储

        常见的浮点数 1.23 1E5等,浮点数家族包括:float double long double   ( 它们的范围在float.h中定义)

        它们的存储按照 IEEE754标准储存

V = (-1)^s * M * 2^E (-1)^s 是符号位,当S = 0就是正数, 当S=1的时候就是负数 M 表示有效数字,M是大于等于1,小于2的 2E表示指数为位

        例如 5.0 = 101.0 = 1.01 * 2^2

               -5.0 = -101.0 = -1 * 1.01 * 2 ^ 2

        由IEEE 754规定

        32位的浮点数这样储存

         64位的浮点数这样储存

注意 : 

         在对E存储的时候,要加上中间值127,然后表示成二进制码储存 而储存M的时候,尾数要去整数部分,然后补齐0到23位

0 人点赞