java基础四 原码,反码,补码

来源:互联网 发布:matlab 矩阵 降维 编辑:程序博客网 时间:2024/06/06 15:02

------在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

1 0