分页: 1 / 1
关于shell的数学运算符
发表于 : 2013-04-26 1:56
由 Rainy.mayday
菜鸟刚刚开始学习脚本,看到了这样一个例子:
#!/bin/bash
let x=2 y=2**3 #**是乘幂
(( w=(y/x) + ( (~ ++x) & 0x0f) ))
echo $? w=$w
不明白( (~ ++x) & 0x0f) )是怎么算出12的,

困惑ing
Re: 关于shell的数学运算符
发表于 : 2013-04-26 8:38
由 YeLee
[bash]
#!/bin/bash
(( p1=(~ 3) ))
(( p2= p1 & 0x0f ))
printf "%x\t%x\t%d\n" $p1 $p2 $p2
[/bash]
这是位运算吧。
开始的时候x=2,运算前先自加,2自加便是3。
这就变成了
在这里3转换为16进制是0x03,取反后是0xfc。
现在成了
算一下
可以知道十六进制的0xfc转换为十进制是252。
而十六进制的0x0f则是15。
代码: 全选
echo "ibase=16;obase=2;FC" |bc
十六进制的0xfc转为二进制的结果是11111100。
代码: 全选
echo "ibase=16;obase=2;0F" |bc
十六进制的0x0f转换为二进制的结果是00001111。
现在成了11111100 & 00001111的位运算了。
结果不难得知是00001100,转化为十进制便是((p2x=2#1100));echo $p2x。
Re: 关于shell的数学运算符
发表于 : 2013-04-26 8:45
由 b33e
啧啧,学习了

Re: 关于shell的数学运算符
发表于 : 2013-04-26 10:42
由 Rainy.mayday
原来是位运算和进制的转化啊,长见识了

Re: 关于shell的数学运算符
发表于 : 2013-04-26 11:01
由 needle
我自认为自己算是脚本高手了~
看了下阁下的语句,
oh,s-h-i-t,
老子不会……
Re: 关于shell的数学运算符
发表于 : 2013-06-03 8:58
由 naturalaw
gnome3好看,鼠标点得累死人,眼睛定位累,总点不到啊,程序栏栏一多界面就扁了
Re: 关于shell的数学运算符
发表于 : 2013-06-19 17:34
由 bzhao
这些是来自C的按位操作了!