位运算
原码 反码 补码
注意的规则:
01.整数的三个码都是一致的,不需要转换
02.负数必须转换成补码才能运算
03.计算机真正参与运算的是 补码
04.在java中所有的数字嗾使有符号的 符号位 0==》 整数 1==》负数
05.符号位就是最高位也是最左边的一位
06.负数的反码=符号位不变+其他位取反(1变0 0变1)
07.负数的补码=反码+1
3 - 2 =1 写出过程 1.先找出3的补码 因为3是正数,补码和原码一致 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 ==》3的补码 2.找到-2的补码 先找到-2的源码 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 ==》 -2的源码 不能参与运算 需要转换成 反码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 ==》 -2的反码 也不能参与运算 需要转换成补码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 ==》 -2的补码 参与运算了 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 ==》 3的补码 =================================================================== 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 =================================================================== 1*2的0次方 ===》位置数字*进制的下标次方
算数的右移和算数的左移
算数的右移 >>:
01.符号位不变
02.低位溢出删除
03.高位补零!
10 >> 1 10的2进制数字 右移一位 >>:位移的方向 1 :位移的位数 首先找到10的2进制 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 ====》10的2进制 >>1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 ====》右移1位的结果 ================================================================== 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 ==》5 -1 >> 1 首先找到-1的2进制 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ==>-1的2进制 原码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 ==>-1的2进制 反码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ==>-1的2进制 补码 >> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ================================================================ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ===》-1的补码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 ===》-1的反码 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ===》原码 -1
算术左移 <<:
01.符号位不变
02.高位溢出删除
03.低位补零
1 << 4
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ===》1的补码
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
========================================================================
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 ==>结果16
逻辑右移,没有逻辑左移 >>>:
01.不管符号位
02.低位溢出删除
03.高位补零
-1 >>> 1 -1逻辑右移1位 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ===》-1的原码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 ===》-1的反码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ===》-1的补码 >>> 1============================================================ 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ===》-1的逻辑右移1位 2147483647 int类型的最大值
位运算 : & | ^ ~
01. & 按位与 :两位都是1,结果是1
3&4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 & 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 =========================================== 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
02.| 按位或 :两位有一位是1,结果是1
3|4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 =========================================== 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
03.^ 按位异或 :两位必须一个为0,一个为1,结果才是1
3^4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 ^ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 =========================================== 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
04.~ 按位取反,只能是一个表达式
按位取反结果等于该数的相反数减1
~3 ====》-4(-3-1=-4)
posted on 2017-12-27 13:57 天天xiangshang 阅读(143) 评论(0) 编辑 收藏 举报