------在Java里面,有些数据是用有符号数据表示法表示的,主要有原码,反码,补码,学习这个的目的是为了以后学习强制类型转换做准备的
------原码
就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
通过一个字节(8个二进制位)表示+7和-7
+7的原码表示为00000111
-7的原码表示为10000111
注意:这样计算+7和-7的加法运算是不等于0的,计算机里面的计算一般按照补码进行运算
------反码
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
+7的反码表示为00000111
-7的反码表示为11111000
------补码正数的补码与其原码相同;负数的补码是在其反码的末位 加1。
+7的补码表示为00000111
-7的补码表示为11111001
注意此时的+7与-7相加就是0了,00000111加上11111001的结果为100000000,但是一个数只有8字节,所以就把超出符号位的那个1去掉
最后上两个练习
1.已知原码0b10110101求补码
这里的原码是0b10110101,符号位是1,所以就是先求他的反码(将原码取反),求得反码是11001010,再在反码末位加一,求得补码是11001011
2.已知补码(0b11101110)求原码
这里已知补码求原码,其实就是已知原码求补码的逆向过程首先将补码-1,得到反码11101101,再取反得到原码10010010