天天看点

操作符系列教材 (四)- Java的位操作符

操作符系列教材 (四)- Java的位操作符

位操作符在实际工作中用的并不常见,但是同学们总是很喜欢纠结这些位操作。

所以本章节会给出每一个操作符的操作实例帮助大家理解其具体含义。

最后说,如果确实感兴趣,就看看,个人建议跳过这个章节。 真正工作用到了,再来看。

步骤1:一个整数的二进制表达

步骤2:位或

步骤3:位与

步骤4:异或

步骤5:取非

步骤6:左移 右移

步骤7:练习-快速计算2x16

步骤8:答案-快速计算2x16

步骤9:带符号右移与无符号右移

步骤10:练习-位操作符

步骤11:答案-位操作符

示例 1 : 一个整数的二进制表达

位操作都是对二进制而言的,但是我们平常使用的都是十进制比如5。

而5的二进制是101。

所以在开始学习之前,需要掌握一个整数的二进制表达是多少。

通过Integer.toBinaryString() 方法,将一个十进制整数转换为一个二进制字符串

操作符系列教材 (四)- Java的位操作符

示例 2 : 位或

5的二进制是101

6的二进制是110

所以 5|6 对每一位进行或运算,得到 111->7

示例 3 : 位与

所以 5&6 对每一位进行与运算,得到 100->4

示例 4 : 异或

所以 5^6 对每一位进行异或运算,得到 011->3

一些特别情况:

任何数和自己进行异或 都等于 0

任何数和0 进行异或 都等于自己

示例 5 : 取非

5 的二进制是 00000101

所以取反即为 11111010

这个二进制换算成十进制即为-6

示例 6 : 左移 右移

左移:根据一个整数的二进制表达,将其每一位都向左移动,最右边一位补0

右移:根据一个整数的二进制表达,将其每一位都向右移动

示例 9 : 带符号右移与无符号右移

带符号右移 >>

对于正数, 带符号右移 >> 会把所有的位右移,并在最前面补0

对于负数, 带符号右移 >> 会把所有的位右移,并在最前面补1

无符号右移>>>

如果是一个负数,那么对应的二进制的第一位是1

无符号右移>>>会把第一位的1也向右移动,导致移动后,第一位变成0

这样就会使得负数在无符号右移后,得到一个正数

简单的说:

带符号右移 >> 移动后正的还是正的,负的还是负的,符号不变

无符号右移>>>移动后,变正的了

更多内容,点击了解: https://how2j.cn/k/operator/operator-bitwise/270.html

上一篇: iOS开发--JSON
下一篇: iOS开发前景

继续阅读