由~0=-1引出的

白痴了一波,基础很重要,今天我遇到了一个布尔运算就是~0=?,我下意识的人为~0=255。但是大错特错了,下面就说一说先来说几个概念:

用例子说一下原码、反码、补码。

     

 二进制原码反码补码
4+100000001000000010000000100
-4-10010000100111110100111110101

正数的原码、反码、补码都是本身,负数的原码为其绝对值的原码最高位(符号位)变为1,反码为符号位不变,其余取反,补码为反码加1。

        ~0各位取反为11111111但是java中默认是有符号的,所以要求其补码,即10000001=-1。大家不放记住一个公式:~a = -(a=1);简单又方便。再说几个容易混淆的

^:这个符号在java中不是求平方的,而是异或的操作,即相同为0,不同为1;

4<<2:0100向左移动2位,后面补0即4的2次方为16

4>>2:0100向右移动2位,前面补0为1

看箭头的方向,箭头朝向哪里就是向哪边移位。

【注】:负数的移位,将负数变为补码形式,右移高位补1,左移低位补0,在还原为原码

-4的补码11111100,右移2位高位补1为11111111。变为原码补码减1,除符号位取反为10000001为-1。

左移的话低位补0,过程简单,不说了,要回去了

05-28
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值