逻辑符号表格
逻辑符号 | 含义 | 描述 |
---|---|---|
& | 按位与 | 将数字转成二进制计算,两个位都为1时,结果才为1 |
| | 或 | 两个位都为0时,结果才为0 ,反知任何一个为1结果为1 |
^ | 异或 | 两个位相同为0,不同为1 |
<< | 左移 | 整体二进位全部左移若干位,高位丢弃,低位补0 |
>> | 带符号右移 | 整体二进位全部右移若干位,低位丢弃,高位补为符号位 |
&& | 逻辑与 | 两者都为真结果为true |
|| | 逻辑或 | 两者中任何一个为true结果为true |
以 十进制10 和 5为例,首先需要将十进制数转成二进制(如 :0001110)
十进制转换二进制计算方法
使用代码转换二进制
private fun print(num: Int) {
for (i in 31 downTo 0) {
LogUtils.LOG_V("print 二进制数据 = ${if (num and (1 shl i) == 0) "0" else "1"}")
}
}
二进制:
10 的二进制 :1010
5 的二进制:101
1、10&5
10&5 = 0000 = 0
LogUtils.LOG_V("[ttttt]-> 10 & 5 = ${(10 and 5)}")
2、10|5
10|5 = 1111= 15
LogUtils.LOG_V("[ttttt]-> 10 | 5 = ${(10 or 5)}")
3、10^5
10|5 = 1111= 15
LogUtils.LOG_V("[ttttt]-> 10 ^ 5= ${(10 xor 5)}")
4、10<<5 10转成二进制位向左移动五位低位用零补位 高位丢弃
10|5 = 1 0100 0000= 320
LogUtils.LOG_V("[ttttt]-> 10 << 5 = ${(10 shl 5)}")
5、10>>5 10转成二进制位向右移动五位高位用零补位,低位丢弃
10|5 = 0000= 0
LogUtils.LOG_V("[ttttt]-> 10 >> 5 = ${(10 shr 5)}")
6、a&&b
a和b都为真,结果为真 ,否则都为假
7、a||b
a和b任何一个为真,结果为真 ,否则都为假