【请教】 x:=x and (-x)是什么意思?
pascal吧
全部回复
仅看楼主
level 1
Mcg′泯翌 楼主
如题,
给x随意赋值
x:=x and (-x);
什么意思?
哪位高手帮忙[Yeah]
2010年02月19日 09点02分 1
level 5
[拍砖]...这个真不懂。。。
2010年02月19日 12点02分 2
level 6
2010年02月19日 12点02分 3
level 5
这是位与计算啊
相关的参考百科
2010年02月20日 00点02分 4
level 6
非也非也。哈哈,LS找的数一定全部是奇数
2010年02月20日 13点02分 6
level 1
AND貌似只能对布尔表达式运算啊...1是true?
那表示X和-x都为True,也就是...都是奇数?
2010年02月20日 16点02分 7
level 5
8楼正解!
这是位运算操作符
相关的还有:OR/XOR/NOT等等
2010年02月21日 03点02分 9
level 6
看来没人能看得出来,算了,我还是说答案吧!
从语法上看,这确实是位运算。但是,从深层看,这个式子还有其他含义。
首先,找一下规律
x   x and (-x)
1     1
2     2
3     1
4     4
5     1
6     2
7     1
8     4
这样,就很容易发现这个式子是求二进制中最后一个是1的位置。
这个式子广泛运用在树状数组中,详情请看我在3L发的贴。
2010年02月21日 03点02分 10
level 4
请阅读n皇后问题位运算版:
http://www.matrix67.com/blog/archives/266
2010年02月21日 04点02分 11
1