一、
* A:为什么要学习原码反码补码?
* 后面要学习强制类型转换,如果不知道有原反补会看不懂结果
* B:有符号数据表示法的几种方式
* 原码
* 就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
* 通过一个字节,也就是8个二进制位表示+7和-7
* 0(符号位) 0000111
* 1(符号位) 0000111
* 反码
* 正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
* 补码
* 正数的补码与其原码相同;负数的补码是在其反码的末位加1。
00000111的反码:0000111 00000111的补码:00000111
10000111的反码:11111000 10000111的补码:11111001
00000111的补码:00000111 加上10000111的补码:11111001等于100000000,为八位,所以把1去掉,为00000000(1+1等于0,进一)
二、
原码反码补码的练习
* A:已知原码求补码
* 0b10110100
解:1 0110100(原码)
1 1001011(反码)
1 1001011+1= 11001100(补码)
11001011
+ 00000001
11001100
* B:已知补码求原码
* 0b11101110
解:11101110(补码)
11101110-1=11101101(反码)
11101110
- 00000001
11101101
10010010(原码)