java Int 二进制原理与 +、-、>>、>>>、^、&计算

Int 二进制int 类型默认是有符号的,最高位 0 表示 正数, 1 表示负数。 例如:  5 的二进制:0101 ;  -5的二进制:1101 ;原码、补码 反码 理解:a、原码:一个正数,按照绝对值大小转换成的二进制数;一个负数按照绝对值大小转换成的二进制数,然后最高位补1,称为原码 比如:  5 的原码 : 0101 ;  -5的原码: 1101 ;b、反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。  5 的反码 : 0101 ;  -5的反码: 101
摘要由CSDN通过智能技术生成

Int 二进制

int 类型默认是有符号的,最高位 0 表示 正数, 1 表示负数。 例如:
  5 的二进制:0101 ;
  -5的二进制:1101 ;

原码、补码 反码 理解:
a、原码:一个正数,按照绝对值大小转换成的二进制数;一个负数按照绝对值大小转换成的二进制数,然后最高位补1,称为原码 比如:
  5 的原码 : 0101 ;
  -5的原码: 1101 ;

b、反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。
  5 的反码 : 0101 ;
  -5的反码: 1010 ;

c、补码:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.(即反码 +1)
  5 的补码: 0101 ;
  -5的补码:1011 ;

主要知识点:
①正数的反码和补码都与原码相同。
②而负数的反码为对该数的原码除符号位外各位取反。
③负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1
③ 补码的补码为原码

Int 二进制相加 或 相减

计算原理:
a、减法 可以视为 +负数来处理,所以整体可视为 两个数相加减法

b、二进制相加 一般是以补码的形式相加,将最终结果在取补码 : X(补) + Y(补) = Z(补); X 表示十进 制转成的二进制,Y表示十进制转成的二进制,Z 表示两个二进制相加后的结果,符号位也进行计算,超出位数舍弃(比如X,Y一个3位,一个5位,最终结果Z应该是5位,注意此处涉及到溢出问题,下面会讲到)。

c、例如 4 + 3 = 7 可视为: 0100 + 0011 = 0111 ( 7 )

d、注意 两个数字相加时 应保持二进制的位数相同,位数不够时在符号位之后添加0补齐。

二进制相加溢出问题:
a、按照(1)中所讲的计算原理:当计算 (-6) + (-2) = -8 时: -6 的原码–>反码–>补码:1110–>1001–>1010, -2的原码–>反码–>补码:110–>101–>110, 为保持和-6的二进制一样位宽,因此2的原码–>反码–>补码:1010–>1101–>1110;两个补码相加结果为:11000,结果的位数比原先的多出了一位,此处最左边的1,是会被自然丢弃的(就是不要了)。再看结果,对1000求补码(其实可以看出它就是0)。这和我们想要的-8有天壤之别。原因是这里出现了溢出!!!

b、溢出的定义: 那上面-2-6为例,即1110 + 1010,两个二进制相加时把每个的第一位数(红色字体)相加取其进位数(1+1 进位数是1) 和每个的第二位数相加

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值