十进制小数的原码和补码应该先将其转换成二进制小数,采用"乘2取整,顺序排列"法,直到积中的小数部分为零,或者达到所要求的精度为止,然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。比如0.5625的二进制表示就是0.1001b;如果机器码字长8位的话,0.5的二进制表示就是0.1000000b,
计算机中的数据表示
1.符号数字化 : 用0表示正,用1表示负,则称为符号数字化.
2.真值 : 用正负号脚绝对值表示数值,这种形式称为真值.如 +101011,-111100..............
3.机器数 : 符号数字化以后的数称为机器数.如 0101011,1100101............4.计算机中,我们用一个字节表示一个数,一个字节有8位,超过8位就进1,在内存中的情况为:1 0000 0000,由于进位,1将被丢弃
比如:[0.375]原码=[0.011B] 字长8位原码=00110000B
[0.5625]原码=[0.1001B] 字长8位原码=01001000B正数的补码和正数的原码,反码相同;
负数的反码是其对应正数的原码按位求反,补码是反码末尾加1;
负数最高位为1,表示负数,正数最高位为0,表示正数。
补码取值范围是-128~127,反码是-127~127,原码是-127~127
比如:正数:[X]原 = 0.101011,那么[X]反 = 0.101011,[X]补 = 0.101011
负数:[X]原 = 1.101011,那么[X]反 = 1.010100,[X]补 = 1.1010101
化为2进制是整数部分除以二知道变为1 小数部分乘以2直到变为1 ,符号位0表示正1表示负
正数:原码=补码
负数:
原码 = 正数部分(去掉负号)的二进制值,且符号位(最左边的比特位)为1
反码 = 正数部分(去掉负号)的二进制值,按位取反
补码 = 反码 + 1
小数点依旧用点
定点数
所谓定点数是指小数点位置固定不变的数。在计算机中,通常用定点数来表示整数与纯小数,分别称为定点整数与定点小数。
定点整数:一个数的最高二进制位是数符位,用以表示数的符号;而小数点的位置默认为在最低(即最右边)的二进制位的后面,但小数点不单独占一个二进制位,如下所示:
0 1001010010001010001
数符位 数值位 小数位
因此,在一个定点整数中,数符位右边的所有二进制位数表示的是一个整数值。
定点小数:一个数的最高二进制位是数符位,用来表示数的符号;而小数点的位置默认为在数符位后面,不单独占一个二进制位,如图所示:
0 1001010010001010001
数符位|小数位 数值位
因此,在一个定点小数中,数符位右边的所有二进制位数表示的是一个纯小数。
原码(true form)是一种计算机中对数字的二进制定点的表示方法。原码是指一个二进制数左边加上符号位后所得到的码,且当二进制数大于0时,符号位为0;二进制数小于0时,符号位为1;二进制数等于0时,符号位可以为0或1。
补码,只是适合于表示:整数和纯小数。
非纯小数,无论正负,都不可能表示。
在计算机中,小数,是用“浮点数”存放的。
并不是用原码反码补码这些简单的事。