其他进制转10 进制
冯诺依曼体系: 计算机所有的操作都是基于二进制
- 10进制 --> 123 = 110^2+ 210^1 + 3*10^0
- 2进制 --> 101 = 12^2 + 02^1 + 1*2^0 = 5
- 16进制 --> aa = 1016^1 + 1016^0 = 170
10进制转2进制
对2取余 13–> 1101
如何表示正负数
使用最高位表示符号为
0111 – 7
1111 – -7
问题:
-
数字0如何表示
0000
1000 -
如何计算两个数的加法
7-3 = 7 + (-3)
0111
1011
0010
结果是错的
二进制中的原,反,补
- 原码:
- 正数的原码是本身
- 负数的用最高位1表示负数
- 6 0000 0110
- -6 1000 0110
- 反码
- 正数的反码跟原码一样
- 负数的反码是负数的原码按位取反,符号位不变
- 6 0000 0110 0000 0110
- -6 1000 0110 1111 1001
- 补码 (整数都是以补码的形式在计算机中存储的)
- 正数的补码和原码一样
- 负数的补码是负数的反码加1
- 6 0000 0110–> 0000 0110–>0000 0110
- -6 1000 0110–> 1111 1001–> 1111 1010
- -128 1000 0000 -->0111 1111 --> 1000 0000
原因:
使用原码,反码计算时不准确,使用补码计算时才准确