找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26308|回复: 2

[数值计算] 批处理位运算符可以分辨单数还是双数?

[复制链接]
发表于 2011-8-29 10:02:42 | 显示全部楼层 |阅读模式
...由于位运算符(<< >> & | ^)都是特殊符号,按照上面直接使用会出错。
例如 “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个加起来;如果不是,就直接用后面那个,不会加前面那个?


我混乱了啦~
 楼主| 发表于 2011-8-29 10:05:50 | 显示全部楼层
发表于 2011-8-29 11:00:39 | 显示全部楼层
是以2进制的方式进行运算的,参考:
http://bbs.bathome.net/thread-1844-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 23:27 , Processed in 0.016905 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表