进位计数制
- 二进制
- 八进制
- 十六进制
进制之间的转换
- 整数10 -> 2(除2取余法)
- 小数10 -> 2(乘2取整法)
- 整数2 -> 10(按权相加)
- 小数2 -> 10(按权相加)
- 16 -> 2(逐位转换/分组转换)
原码
用0和1表示符号,数值位不变,二进制真值对应的原码
字长为8位的原码 表示范围:-127~127
【+127】:0 1111111 【-127】:1 1111111
“0”有两种原码形式:0 0000000(+0) 和 1 0000000(-0)
反码
正数情况:和原码一样
负数情况:符号位保持为“1”,数值位分别“按位取反”
字长为8位的反码 表示范围:-127~127
【+127】:0 1111111 【-127】:1 0000000
“0”有两种原码形式:0 0000000(+0) 和 1 1111111(-0)
补码
- 对于正数,补码和原码相同
- 对于负数,符号位保持为“1”,其余数值“按位取反,末位再加1”就是补码值
- 负数的补码为该数对应的无符号数的二进制取反加一。
- 负数补码(首位为1)减一,取反表示的是这个数的无符号数的二进制。
字长为8位的补码 表示范围:-128~127
【+127】:0 1111111 【-128】:1 0000000
“0”只有一种补码形式 【+0】=【-0】00000000
举例:
- -128==>128(无符号数)==>1000 0000(-128的无符号数的二进制)==>0111 1111(取反)==>1000 0000(补码,加一)(负数的首位为1)
- -1==>1(无符号数)==>0000 0001(-1对应无符号数的二进制)==>1111 1110(取反)==>1111 1111(补码,加1)(负数的首位为1)
- 1000 0000(补码) ==> 0111 1111(减一) ==> 1000 000(取反,无符号数128)==> -128(负数)(负数的首位为1)
- 1111 1111(补码) ==> 1111 1110(减一) ==> 0000 0001(取反,无符号数1) ==> -1(负数)(负数的首位为1)
原码和补码之间的转换
(1)已知X原,求X补
X原=1 0011010 X补=1 1100110
(2)已知X补,求X原
【【X补】补】=【X原】
X补=1 1101100 X原=1 0010100
(3)已知X补,求【-X】补 将符号位连同代码一起求反
【X】补=0 1010110 【-X】补=1 0101010
移码
表示浮点数的阶码 阶码为整数
[X]移=2+x n为[X]原的位数(包括符号位),x是真值,移码运算也等价于将x正向平移或增加2^n-1
- 正数:将原码符号位变反
- 负数:将原码连同符号位一起变反,末位再加1,即可得到移码
补码和移码:符号相反、数值位相同
定点数
定点数:数的小数点固定在同一位置