数据的表示
数据的表示
二进制转换
十进制转换为二进制
- 整数:除以2倒取余数,直到商为0。
具体:用2去除十进制整数,得到商和余数;再用2去除商,再次得到商和余数;一直到商为0时结束;然后把先得到的余数作为二进制的低位,后得到的余数作为二进制数的高位,依次排列起来即可。
- 小数:乘2取整,直到小数为0.
具体:用2乘十进制小数,得到积,将积中的整数部分取出;再用2乘余下的小数部分,又得到一个积,再将积中的整数部分取出;一直到积中的小数部分为0,或达到所要求的精度为止;然后先取得整数作为二进制小数的最高位,后取的整数作为低位,依次排列起来即可。
注意:不是任何一个十进制小数都能转换成有限位的二进制数。
二进制转换为十进制
方法:按权相加法,即将二进制每位上的数乘以权,然后相加之和即是十进制数。
规律:个位次数是0,十位次数是1,…,依次递增,而十分位次数是-1,百分位次数是-2,…,依次递减。
机器数
机器数:一个数在计算机中的二进制表示形式,即该数的机器数。机器数最高位表示符号位,0表示正数,1表示负数。
机器数的真值:将带符号位的机器数对应的真正数值称为机器数的真值。(机器数的最高位是符号位,所以其形式值不等于真正的数值。)
原码
原码:符号位+真值的绝对值。
例如:
[+1]原= 0000 0001
[-1]原= 1000 0001
反码
正数:原码本身;
负数:在原码的基础上,符号位不变,其余各位按位取反。
例如:
[+1] = [0000 0001]原= [0000 0001]反
[-1] = [1000 0001]原= [1111 1110]反
补码
正数:原码本身;
负数:在反码基础上+1,也就是在原码基础上,符号位不变,其余各位按位反,最后+1。
例如:
[+1] = [0000 0001]原= [0000 0001]反= [0000 0001]补
[-1] = [1000 0001]原= [1111 1110]反= [1111 1111]补
移码
移码(又叫增码)一般用做浮点数的码,引入的目的是为了保证浮点数的机零为全0。
如果机器字长为n,规定偏移量为 ,则移码的定义为:
若X是纯整数,则[X]移= + X,(- ≤X< )
若X是纯小数,则[X]移=1+X(-1≤X<1)
移码:在偏移量 的情况下,要将补码的符号位取反便可获得相应的码。
例如:
[+1]移=1 0000001
[-1]移=0 1111111
阶码
阶码,表示小数点的位置,一般把一个数转化为科学计数法表示,10的指数就是阶码的大小,再把这个指数转化二进制,写成8位或者11位。
定点数
定点数:小数点的位置固定不变的数。
小数点的位置通常有两种约定方式:
- 定点整数:纯整数,小数点在最低有效数值位之后;
- 定点小数:纯小数,小数点在最高有效数值位之前;
取值范围
码制 | 定点整数 | 定点小数 |
---|---|---|
原码 | -(2 -1)~ +(2 -1) | -(1-2 )~+(1-2 ) |
反码 | -(2 -1)~ +(2 -1) | -(1-2 )~+(1-2 ) |
补码 | -2 ~ +(2 -1) | -1~+(1-2 ) |
移码 | -2 ~ +(2 -1) | -1~+(1-2 ) |
注:对于原码和反码,存在+0和-0两种表示0的方式,只能表示2 -1个数。但是补码和移码可以表示2 个数。
浮点数
浮点数:小数点位置不固定的数,相较于定点数,可以表示更大范围的数。
- 表示格式:
阶符 | 阶码 | 数符 | 尾数 |
---|
阶码:带符号的纯整数;主要决定数值范围;一般用移码表示;
尾数:带符号的纯小数;决定数值的精度;一般用补码表示;
注:浮点数表示不是唯一的,即小数点位置变化时,阶码也对应变化。因此多个浮点形式可以表示同一个数。
- 点赞
- 收藏
- 关注作者
评论(0)