java基础二-位运算

目录

 

1 源码、反码、补码

2 位运算

3 移位运算

4 移位运算例题


1 源码、反码、补码

正数的原码、反码、补码都一样

负数的反码=它的原码符号位不变,其它位取反,负数的补码=它的反码+1。

在计算机运算的时候,都是以补码的方式来运算的

 

2 位运算

java中有4个位运算,分别是“按位与&、按位或|、按位异或^,按位取反~”

按位与&:两位全为1,结果为1

按位或|:两位有一个为1,结果为1

按位异或^:两位一个为0,一个为1,结果为1

按位取反~:0->1,1->0

 

3 移位运算

算术右移(符号位补高位):低位溢出,符号位补空出的的高位。移动n位后结果是原来的数字除以2的n次方。

算术左移(0补低位):高位溢出,0补空出的的低位。移动n位后结果是原来的数字乘以2的n次方。

>>>逻辑右移,运算规则是:低们溢出,高位补0

 

4 移位运算例题

8和-4进行位运算和移位运算

8

源码、反码、补码:0000_0000_0000_0000_0000_0000_0000_1000

-4

源码:1000_0000_0000_0000_0000_0000_0000_0100

反码:1111_1111_1111_1111_1111_1111_1111_1011

补码:1111_1111_1111_1111_1111_1111_1111_1100

 

8 & (-4)运算:

补码运算结果:0000_0000_0000_0000_0000_0000_0000_1000

运算结果是正数,故结果为8

 

8 | (-4)运算:

补码运算结果:1111_1111_1111_1111_1111_1111_1111_1100

求反码:1111_1111_1111_1111_1111_1111_1111_1011

求源码:1000_0000_0000_0000_0000_0000_0000_0100

运算结果是负数,故结果为-4

 

8 ^ (-4)运算:

补码运算结果:1111_1111_1111_1111_1111_1111_1111_0100

求反码:1111_1111_1111_1111_1111_1111_1111_0011

求源码:1000_0000_0000_0000_0000_0000_0000_1100

运算结果是负数,故结果为-12

 

~8运算:

补码运算结果:1111_1111_1111_1111_1111_1111_1111_0111

求反码:1111_1111_1111_1111_1111_1111_1111_0110

求源码:1000_0000_0000_0000_0000_0000_0000_1001

运算结果是整数,结果为-9

~(-4)运算:

补码运算结果:0000_0000_0000_0000_0000_0000_0000_0011

运算结果为正数,故结果为3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值