shell编程之位运算符
Posted 永远不要矫情
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程之位运算符相关的知识,希望对你有一定的参考价值。
位运算是基于内存中二进制数据的运算。常见的位运算有左移运算,右移运算,按位与,按位或,按位非,按位异或等运算。
1.左移、右移运算
左移、右移元素实际是整数在内存中的左右移动。符号分别为<<和>>。例如十进制数4,使用二进制表示为:00000100;若对其进行左移两位,则左移后右边的空缺用0补足,为00010000,十进制的值为16.
[root@node1 ~]# let "value=4<<2"
[root@node1 ~]# echo $value
16
[root@node1 ~]# let "value=16>>2"
[root@node1 ~]# echo $value
4
2.按位与
按位与运算符为&,即将两个整数写成二进制形式,同位置进行比较,只有当对应的二进制值都为1时,结果才为1,例如:12的二进制为00001100,4的二进制为00000100;与运算的结果为4
[root@node1 ~]# let "value=12&4"
[root@node1 ~]# echo $value
4
3.按位或
按位或运算符为|,即将两个整数写成二进制形式,同位置进行比较,只要对应的位置有1,结果就为1,例如:8的二进制为00001000,4的二进制为00000100;或运算的结果为12
[root@node1 ~]# let "value=8|4"
[root@node1 ~]# echo $value
12
4.按位非
按位非运算符为~,计算比较复杂,快捷公式为~a的值为-(a+1)
例如:
[root@node1 ~]# let "value=~8"
[root@node1 ~]# echo $value
-9
5.按位异或
按位异或运算符为^,即将两个整数写成二进制形式,同位置进行比较,只有当对应的二进制值都为0或者都为1时,结果才为0,否则为1,例如:10的二进制为00001010,3的二进制为00000011;异或运算的结果为9
[root@node1 ~]# let "value=10^3"
[root@node1 ~]# echo $value
9
以上是关于shell编程之位运算符的主要内容,如果未能解决你的问题,请参考以下文章