1. 进制转换,补码
1. [二进制、八进制、十进制、十六进制的相互转换](https://www.cnblogs.com/tandaxia/p/4248466.html#tanDiv2)
1.1. 十进制转二进制, 十进制转八进制,十进制转十六进制
方法:用十进制的数,除以要转换的位数取余数,最后的结果从最后一个余数读到第一个
1.2. 二进制转八进制,二进制转十六进制
二进制的三位:就是一位八进制,二进制的四位:就是一位十六进制
2. 原码、反码、补码
补码的意义:让计算机运算设计更简单,可以只有加法没有减法,让符号位也参与计算
反码:正数的反码和原码一样,负数的反码除最高位符号位外,其他位都取反
举例说明:10 - 8 = ? 和 8 - 10 = ?
10 - 8 = 10 + (-8) 的计算
-------- start -------
10原码: 0000 1010
-8原码: 1000 1000
-------------------
10反码: 0000 1010
-8反码: 1111 0111
-------------------
10补码: 0000 1010
-8补码: 1111 1000
补码计算结果: 10000 0010 (注意:注意:这里结果是 9 位,因为在进行加法时最高位进位了。8 位二进制数只能表示 8 位长度,所以进位会被丢弃。实际我们只看低 8 位,即 0000 0010。)
二进制 0000 0010最高位为0表示是正数,正数的补码、反码、原码一样,所以补码二进制 -> 转成十进制为:2
8 - 10 = 8 + (-10)的计算
-------- start -------
8原码: 0000 1000
-10原码: 1000 1010
--------------------
8反码: 0000 1000
-10反码: 1111 0101
--------------------
8补码: 0000 1000
-10补码: 1111 0110
补码计算结果: 1111 1110 (一个字节八位,最高位为1,表示是负数)
1111 1110 一个字节八位最高位为1表示是负数,所以此补码二进制转成十进制,需要补码减一变成反码,反码再转成原码,原码转十进制
补码 1111 1110
--> 反码(补码减1):1111 1101
--> 原码(符号位外,其他取反):1000 0010
--> 十进制:-2