数据的格式&数的机器码表示:原码、补码、反码、移码

    在了解数的机器码之前先说一下数据的格式

    计算机存储数据使用2进制,那么计算机如何存储小数?在计算机里存储小数,那个小数点并不会使用二进制特别表示,如果用二进制表示,估计计算机要完成算术运算也是够呛的...小数的存储另有方法

    纯小数纯整数在计算机中存储的格式我们一般称为定点数

    定点数——小数点是固定的

    比如,计算机用n+1位(从0开始计数,X0,X1... Xn)来存储一个有符号数据,那么,最高位X0即为数符,当X0 = 1,数据为负数;当X0 = 0,数据为正数,。后面的n位尾数则用来存储数的量值。

    小数点在X0与X1之间的则是纯小数,小数点在Xn后面的则是纯整数。定点数的小数点完全靠事先约定而隐含在两个不同位置(见下面的浮点数)。

    浮点数

    比较官方的解释:所谓浮点格式,是指在表示数据时,将浮点数的范围和精度分别表示,相当于小数点的位置随比例因子的不同而在一定的范围内可自由浮动。

    任何一个进制数N,都可以用N = M * R^E 来表示,其中,M是尾数,R是基数,E是阶码。比如,十进制的123.456可以表示成1.23456 * 10^2,0.0123可以表示成1.23 * 10^(-2)。

    

IEE754标准中的两种浮点数格式

    IEE754标准中规定了两种浮点数格式:单精度浮点数(32位)、双精度浮点数格式(64位),在上图中,S是数符,用0、1来判别数据的正负;E是阶码,就是指数;M是尾数;因为计算机使用2进制存储数据,所以基数都是2。在这样的存储中,阶码的正负也并没有直接用二进制来表示,而是经过计算得出,比如求一个规范化的32位浮点数x的真值(正负号加绝对值表示的数),用以下图中的公式,而64位的计算则要把(E-127)换成(E-1023)。

数的机器码

    简单来说,对于有符号的数据,原码由符号位和尾数(数据绝对值的二进制)组成;正数的反码就是原码,负数的反码符号位不变,尾数按位取反;正数补码也是原码,负数补码符号位不变尾数按位取反后加1;移码不能表示定点小数,求一个原码的移码,可以先求它的补码,然后再将符号位取反(就这么简单)。

    原码

    一种比较直观的机器码表示方法,在数据的二进制原码中,最高位为符号位,剩下的部分表示数据的绝对值。那么,假设对于定点数x(设x为一个二进制真值,比如0.1011、-11001、-0.1101),x的原码([x]原)表示定义如下

    对于定点小数和定点整数,0的原码各有两种形式+0,-0。

    反码

    假设对于定点数x(设x为一个二进制真值),x的反码([x]反)表示定义如下

 

    在反码中,也有+0,-0之分。如果想要将反码变回原码,首先判断符号位,如果为0(正数),那么原码就是反码;如果为1(负数),符号位不变,尾数按位取反。

    补码

   假设对于定点数x(设x为一个二进制真值),x的补码([x]补)表示定义如下

   0的补码是唯一的。由补码求原码,首先判断符号位,如果为0(正数),那么原码就是补码;如果为1(负数),符号位不变,尾数按位取反并在末尾加1。

    移码

    假设对于定点数x(设x为一个二进制真值),x的补码([x]移)表示定义如下

    若已知一个数的移码要求原码,可以先将移码的符号位取反得到补码,再将补码转换成该数的真值。

    定点数机器码转换器.exe,密码:ew2b


版权声明:本文为hsbdbshs124346原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。