CS61C | lecture1
计算机系统抽象
二进制可以表示任何东西
n 位数字(base B) 可以表示 <= $B^n$ 个事物
数字
计算机中,用二进制表示数字
字符
26 个字符用 5 bits 可以表示
ASCII: 7 bits
布尔值
0 -> False
1 -> True
unsigned
sign and magnitude
将第一位作为符号,剩下的作为无符号数。
这样就会导致存在两个 0,$0…0_{two}~and~10…0_{two} = \pm 0_{ten}$
最大的正数 $01…1_{two}= (2^{(n-1)}-1)_{ten}$
最小的负数 $1…1_{two}=-(2^{(n-1)} - 1)_{ten}$
biased notation
类似于 unsigned,但是会有偏移从而让 0 粗略的在中间。值 = “unsigned value” - bias
传统偏移量 $(2^{(n-1)} - 1)$
此时,0 为 $01…1_{two}=0_{ten}$
最大的正数 $1…1_{two} = (2^{(n-1)})_{ten}$
最小的负数 $0…0_{two}=-(2^{(n-1)} - 1)_{ten}$
one’s complement
然而此时 0 有两个 $0…0_{two}~and~1…1_{two} = \pm0_{ten}$
最大的正数 $01…1_{two} = (2^{(n-1)}-1)_{ten}$
最小的负数 $10…0_{two} = -(2^{(n-1)}-1)_{ten}$
two’s complement
对于 0,只有 $0…0_{two} = 0_{ten}$
最大的正数 $01…1_{two} = (2^{(n-1)} - 1)_{ten}$
最小的负数 $10…0_{two}=(-2^{(n-1)})_{ten}$
正数翻转所有位并加 1 可以得到负数。
对于补码来说
会溢出 | 不会溢出 |
---|---|
+ + + | - + + |
- + - | + + - |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Birdy の 小窝!
评论