linux awk|Linux中awk内建数学函数之左移运算、右移运算、按位取反运算

更新时间:2020-04-20    来源:php函数    手机版     字体:

【www.bbyears.com--php函数】

程序设计中,位操作运算符的一种。在c++中,移位运算符有双目移位运算符:<<(左移)和>>(右移)。移位运算符组成的表达式也属于算术表达式,其值为算术值。左移运算是将一个二进制位的操作数按指定移动的位数向左移位,移出位被丢弃,右边的空位一律补0。右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位,这由不同的机器而定。在使用补码作为机器数的机器中,正数的符号位为0,负数的符号位为1。
在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动 的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是 移动66次和移动2次得到的结果相同。

 

实例:
[root@Legion10 ~]# echo 233 | awk \"{print lshift($1,5),rshift($1,5),$1}\" 7456 7 233 [root@Legion10 ~]#

 

解析:
[root@Legion10 ~]# echo 233 | awk \"{print lshift($1,5),rshift($1,5),$1}\" 7456 7 233 [root@Legion10 ~]# cat 2 dec             bin             |       dec                     bin 233             0000011101001   |       233                     11101001 7456            1110100100000   |       7                       00000111 ----左移5位-------------        |   ----右移5位------------  [root@Legion10 ~]#

 

Linux之awk内建数学函数之左移运算、右移运算、按位取反运算

 

来个右移位运算计算ip
[root@Legion10 ~]# echo 134744072|awk \"{ 	a=0xFF000000; 	b=0xFF0000; 	c=0xFF00; 	d=0xFF; 	e=rshift(and($1,a),24); 	f=rshift(and($1,b),16); 	g=rshift(and($1,c),8); 	h=and($1,d); 	printf("%d.%d.%d.%d\\n",e,f,g,h) }\"  8.8.8.8 [root@Legion10 ~]#

 

Linux之awk内建数学函数之左移运算、右移运算、按位取反运算

本文来源:http://www.bbyears.com/jiaocheng/92872.html