Java学习笔记(1.0)

①对于正数而言,原码、反码、补码是相同的

②对于负数,原码,反码(为首位表示正负的1不变,剩下的0和1互换),补码(为反码加1)

左移<<

左移的快速计算方式就是乘以2的n次方,比如说左移两位就是乘以2的2次方。

就拿2来举例:

0000 0010 左移两位变成0000 1000变成了2乘以2的2次方,结果为8

对于负数左移也是一样的快速计算方式,比如-2左移两位变成-2*(2^2)=-8

右移>>

与左移相反,右移的快速计算方式就是除以2的n次方,如果除不尽就向下取整。

比如-9右移两位 等于-9/(2^2)=-3【向下取整为-3】

-9的原码为:1000 0000 0000 0000 0000 0000 0000 1001

反码为:1111 1111 1111 1111 1111 1111 1111 0110

补码为:1111 1111 1111 1111 1111 1111 1111 0111

右移两位为:11(补1) 1111 1111 1111 1111 1111 1111 1111 01

根据补码算反码:

11(补1) 1111 1111 1111 1111 1111 1111 1111 00

根据反码算原码:为-3

1000 0000 0000 0000 0000 0000 0000 0011

无符号右移>>>

运算规则:往右移动后,左边空出来的位置直接补0,不管最高位是0还是空出来的都拿0补。

正数:和右移一样

9>>>2 为2

负数:右移出去几位,左边补几个0,结果变成正数。

-9>>>2 为1073741821

例子:8>>>32   相当于没有移动还是8

8>>>34相当于移动两位

按位与:&

1&1 为1

1&0 为0

0&1 为0

0&0 为0

5&3 为1       5(0101)&3(0011)  为0001

按位或: |

运算规则:对应为只要有1即为1,相当于符号前后只要有一个为true,结果就是true

1 | 1 为1

1 | 0 为1

0 | 1 为1

0 | 0 为0

5 | 3 为7

按位异或:^

运算规则:对应位一样的为0,不一样的为1

1^1 为0

1^0 为1

0^1 为1

0^0 为0

5^3 为6

按位取反~

运算规则:~0就是1    ~1就是0

~10 结果为-11    符号位位0,取反后就为1 ,所以符号就变成了负号

10的补码(由于10是正数,原码,补码,反码一样):0000 0000 0000 0000 0000 0000 0000 1010

按位取反:1111 1111 1111 1111 1111 1111 1111 0101 换成反码

1111 1111 1111 1111 1111 1111 1111 0100 换成原码

1000 0000 0000 0000 0000 0000 0000 0100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mez_Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值