Board logo

标题: [数值计算] 批处理位运算符可以分辨单数还是双数? [打印本页]

作者: raymai97    时间: 2011-8-29 10:02     标题: 批处理位运算符可以分辨单数还是双数?

...由于位运算符(<< >> & | ^)都是特殊符号,按照上面直接使用会出错。
例如 “SET /A var=1 & 1”与运算,并不会显示为1,因为cmd.exe 会把&解释成命令分隔符。
对于这样的"位运算符",我们需要把他们用双引号引起来,也可以用转义字符^,看例子。
SET /A var= 1 "&" 1 与运算 (同为1 时为真,一方出现假即为假)
SET /A var= 1 ^| 1 或运算 (同为假时才为假,只要一方出现真即为真)
SET /A var= 1 "^" 1 异或运算 (相同为假,相异为真)
SET /A var= 3 "<<" 2 左移位运算, 3 的二进制为11,左移2 位为1100,换成十进制就是12
SET /A var= 4 "^>^>" 2 右移位运算,4 的二进制为100,右移动2 位为1,结果为1
很明显,如果是移位操作符^,需要使用两次^,此时使用双引号显得更方便。...


看不明白,比如“Set /a var=1 "&" 1”,同为一时为真?怎么用if判断哦?
我反而得到很搞笑的结果:

Set /a var=1"&"1,var为1
set /a var=1"&"2,var为0
set /a var=1"&"3,var为1


所以"&"可以分辨单数还是双数?(单数为1,双数为0)

再来一个
set /a var=1^|3,var为3
set /a var=1^|4,var为5(1+4?)
set /a var=2^|4,var为6(2+4?)
set /a var=1^|5,var为5


所以^|也可以分辨双数单数?如果后面那个是双数,就2个加起来;如果不是,就直接用后面那个,不会加前面那个?


我混乱了啦~
作者: raymai97    时间: 2011-8-29 10:05

对了,这个是参考“http://bathome.net/viewthread.php?tid=12351&extra=&page=1”的
作者: Batcher    时间: 2011-8-29 11:00

是以2进制的方式进行运算的,参考:
http://bbs.bathome.net/thread-1844-1-1.html




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2