目录
位运算符学习
一、二进制中的源码、反码、补码
- 符号
- 有符号数
用最高位的0和1表示正数和负数,比如
0000000111111100
最 高位是0,所以该数字为正数。
- 无符号数
全部二进制均代表数值。
-
有符号数的性质
- 二进制的最高位是符号位:0表示正数,1表示负数。
- 正数的原码、反码、补码都一样
- 负数的反码=它的原码符号位不变,其他位取反(0变1,1变0)
- 负数的补码=它的反码+1
- 0的反码、补码都是0
- 在计算机运算的时候,都是以补码的方式来运算的。
二、java中的位运算符
-
& 位运算与
-
先转化为二进制,然后相同位数比较。
-
两位都为1 ,结果为1。
-
-
| 或运算符
-
先转化为二进制,然后相同位数比较。
-
只要有一个为1 ,结果为1。
-
-
^ 异或运算符
-
先转化为二进制,然后相同位数比较。
-
两位数不相同 ,结果为1。
-
-
<< 左移符 2<<2
-
先转化2为二进制。10
-
左移2为,后面补0,变为1000.十进制为8.
-
当左移的位数大于等于32的时候,要先对32求余,再根据余数左移。比如左移32,就和左移0位相同。
-
-
>>右移符
-
正数参考上边
-
负数如下图:
-
-
>>> 无符号右移
1.无脑右移就可以,不用管符号。
标签:反码,符号,二进制,左移,补码,运算符,计算 From: https://www.cnblogs.com/pengjava/p/18079272