[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

回复 6楼 的帖子

多谢指出,已在顶楼改正。
技术问题请到论坛发帖求助!

TOP

  "set /a 可计算的最大数为2的31次方,最小为负2的31次方"这句话是有点问题的,准确的说法应该是: set /a 可计算的数值,单个数值且最终运算结果只能大于或等于-2的31次方,小于2的31次方",顶楼的说法中,暗指可以等于2的31次方,是不对的;同时,没有明确指出单个数值并且最终结果不能超过此范围,容易让人误解为单个数值不超过也是可行的。

TOP

还有这样一点要注意下
  1. @echo off
  2. for /l %%a in (1 1 10) do (
  3. set /a var=^(1+2^)*%%a-3/4
  4. call echo %%var%%
  5.     )
  6. pause
复制代码
不大可能的事也许今天实现,根本不可能的事也许明天会实现

TOP

好,大家都说一点,这个教程就会慢慢完美了。
对于这个<<,>> 逻辑移位 一直是一知半解,所以也没写出来,看了foxjl的帖就明白了。
  1. set /a var=x^<^<y
  2. 公式中 ^<^< 代表乘2,y 代表用 x 乘2的次数。 (^>^> 则代表除法。)
复制代码
技术问题请到论坛发帖求助!

TOP

就我知道的补充一点点:
<<,>> 逻辑移位.用途是使二进制向左或向右移位.
如十进制20的二进制是1 0100,
向左移一位10 1000,向右移一位01 010.
无符号数用0填充空出来的高位.
我们发现,左移一位后的二进制10 1000转换成十进制后正好是20*2的值,
而右移一位后01 010的十进制也刚好是20/2的值.
因为移位的速度非常快,在计算中如遇到*2或/2的时候不如这样写:

set /a 30 ^<^< 1      ::左移1位,同set /a 30*2
set /a 30 ^>^> 1      ::右移1位,同set /a 30/2

其实还有:
set /a 30 ^<^< 2      ::左移2位,同set /a 30*4
set /a 30 ^>^> 2      ::右移2位,同set /a 30/4

.
..
...

>>写成^>^>,是因为在批处理中>或<是特殊符号需通过^转义.
2

评分人数

    • ieutk: 精品文章PB + 5
    • 随风: 好,大家都说点!PB + 5 + 2

TOP

不错,支持随风大哥,顶啦

TOP

返回列表