底层 机器数的种类
原码
原码是带符号的机器数。
例如:[+5]=0101
[-5]=1101
最前一位是符号位
[+0.125]=0※0001
[-0.125]=1※0001
反码
反码的正数与原码相同,无需作出修改。
负数则在符号位后为尾数集体取反。
原码:[-5]=1101
反码:[-5]=1010
即符号位不变。
[+0.125]=0※1110
[-0.125]=1※1110
补码
补码的正数与原码、反码相同,无需作出修改。
负数则在反码负数的基础上末位+1.
反码:[-5]=1010
补码:[-5]=1011
补码[-0.125]=1※1111
反码[-0.5]=1※0111111
补码[-0.5]=1※1000000
移码
移码是在原有的量上更变符号值,即将补码的符号取反即可。
原码:[+4]=0100 [-4]=1100
反码:[+4]=0100 [-4]=1011
补码:[+4]=0100 [-4]=1100
移码:[+4]=1100 [-4]=0100
定点数
definition:定点数是表示数据时小数点的位置固定不变。
定点小数
纯小数,小数点在最高有效数值之前。
定点整数
纯整数,小数点在最低有效数值之后。
各码制带符号的范围
码制 | 定点整数 | 定点小数 |
---|---|---|
原码 | -(2n-1-1) ~ +(2n-1-1) | -(1-2-(n-1)) ~+(1-2-(n-1)) |
反码 | -(2n-1-1) ~ +(2n-1-1) | -(1-2-(n-1)) ~+(1-2-(n-1)) |
补码 | -2n-1~+(2n-1-1) | -1 ~+(1-2-(n-1)) |
移码 | -2n-1+(2n-1-1) | -1 ~+(1-2-(n-1)) |
浮点数
二进制转换为浮点数
10110110 = 0.10110110 * 28
10110110
称之为尾数
2的8次方,8称之为阶码
在机器数之中,包括编程语言均会存在浮点数
的数据类型
一般分为单精度与双精度
这里需要提及的标准称之为 IEEE754工业标准
该标准是由IEEE制造的有关浮点数的工业标准一般表示为
s p m
s是指在符号,即正数为0,负数为1。
p是指阶码,一般以 移码 表示。
m是指尾数,一般以原码表示。
以单精度为例,单精度浮点数的字长为32,尾数长度为23,偏移量是+127.
例1:以浮点数176.0625转化作IEEE754标准单精度浮点数形式
1:把176.0625分成整数与小数部分转化为二进制
176 = 10110000
0.0625 = 0.0001
176.0625 = 10110000.0001
2:转化为浮点数形式
10110000.0001=1.01100000001 * 27
确定阶码为 7
然后去掉最高位的1
即尾数(满足23位)
m=01100000001000000000000
p为阶码+偏移值
既7+127 =134
134转换为二进制为 10000110
p = 10000110
s= 0 由于176.0625是正数
最终转换的形式需要按照s p m 排列即
176.0625的IEEE754单精度浮点数形式为
0 10000110 01100000001000000000000