定点数的表示
例:996.007; -- 常规计数
例:9.96007 * 10^2; -- 科学计数法
无符号数
例:1001 1100B
= 1 * 2^7 + 1 * 2^4 + 1 * 2^3 + 1 * 2^2
= 156D
例:8位二进制数: 2^8种状态(0000 0000 ~ 1111 1111) = 0 ~ 256
= 1 0000 0000(256) - 1
= 2^8 - 1
通常只讨论无符号整数,没有无符号小数,例如C语言中unsigned只能修饰int、long等整数类型,修饰float编译器则会报错
有符号数
原码
反码
反码只是原码转变为补码的一个中间状态,并没有实际作用
补码
机器字长同样是n + 1位时,补码比原码反码可多表示一个数
移码
例:x = +19D; [x]原 = 0,0010011; [x]反 = 0,0010011; [x]补 = 0,0010011; [x]移 = 1,0010011
练习
[x]原 = 0011 0010
[x]反 = 0011 0010
[x]补 = 0011 0010
[x]移 = 1011 0010
[x]原 = 1110 0100
[x]反 = 1001 1011
[x]补 = 1001 1100
[x]移 = 0001 1100
[x]原 = 1000 1101 => x = -8 + -4 + -1 = -13
[x]反 = 1000 1101 => [x]原 = 1111 0010 => x = -64 + -32 + -16 + -2 = -114
[x]补 = 1000 1101 => [x]原 = 1111 0010 + 1 = 1111 0011 => x = - 64 + -32 + -16 + -2 + -1 = -115
[x]移 = 1000 1101 => [x]补 = 0000 1101 => [x]原 = 0000 1101 => x = 8 + 4 + 1 = 13
[x]原 = 0000 1101 => x = 8 + 4 + 1 = 13
[x]反 = 0000 1101 => [x]原 = 0000 1101 => x = 8 + 4 + 1 = 13
[x]补 = 0000 1101 => [x]原 = 0000 1101 = 1111 0011 => x = 8 + 4 + 1 = 13
[x]移 = 0000 1101 => [x]补 = 1000 1101 => [x]原 = 1111 0010 + 1 = 1111 0011 => x = -64 + -32 + -16 + -2 + -1 = -115
无论使用哪种码,小数点位置(隐含)默认在整数数值部分的最后,在小数数值部分的开头