linux – 算术评估中的&符号和带有x的数字在Bash中是什么意
发布时间:2020-12-13 23:55:09 所属栏目:Linux 来源:网络整理
导读:我很好奇下面的比较究竟是什么,尽可能详细,特别是关于0x2和人物以及他们到底做了什么, if [ $((${nValid} 0x1)) -eq 1 ]; then #...snip...fiif [ $((${nValid} 0x2)) -eq 2 ]; then #...snip...fi 解决方法 它以每比特为基础测试nValid. 按位AND运算符()表
我很好奇下面的比较究竟是什么,尽可能详细,特别是关于0x2和&人物以及他们到底做了什么,
if [ $((${nValid} & 0x1)) -eq 1 ]; then #...snip... fi if [ $((${nValid} & 0x2)) -eq 2 ]; then #...snip... fi 解决方法
它以每比特为基础测试nValid.
按位AND运算符(&)表示逐位运算符将进行AND比较.因此,如果nValid是一个字节(8位)值,那么请查看二进制操作: nValue & 0b00000001 如果nValue为42,那么操作将如下所示 (nValue = 0b00101010) & 0b00000001 => 0b00000000 // (does not have the last bit set) (nValue & 0b00000001) == 0b00000001 // false 而对于第二个(nValid& 0x2) (nValue = 0b00101010) & 0b00000010 => 0b00000010 // (has the 2nd-to-last bit set) (nValue & 0b00000010) == 0b00000010 // true 这对于测试变量中的标志非常有用;通常使用AND通过隔离位来检查标志,使用OR来组合标志. 0b00001000 | 0b00000010 | 0b00000001 => 0b00001011 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |