标题: [数值计算] [已解决]批处理为何这样用set能计算2的几次方? [打印本页]
作者: nnnn111 时间: 2010-7-20 17:08 标题: [已解决]批处理为何这样用set能计算2的几次方?
- @echo off
- set /p n=请输入2 的几次方:
- set /a num=1^<^<n
- echo %num%
- pause
复制代码
想一下这个到底是怎么运算的?
作者: broly 时间: 2010-7-20 17:20
自己set /?
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式
评估器很简单并以递减的优先权顺序支持下列操作:
() - 分组
! ~ - - 一元运算符
* / % - 算数运算符
+ - - 算数运算符
<< >> - 逻辑移位
- 按位“与”
^ - 按位“异”
| - 按位“或”
= *= /= %= += -= - 赋值
&= ^= |= <<= >>=
, - 表达式分隔符
.....
作者: Seter 时间: 2010-7-20 17:52
<<运算符是位操作运算符 计算机里保存形式为2进制 比如1<<2,就是1后面加2个0,再把100转为10进制就是4
作者: nnnn111 时间: 2010-7-20 22:53 标题: 我弄了个新的
- @echo off
- :x
- set /p t=输入
- set /a e=1 "<<" %t%
- echo %e%
- goto x
- pause
复制代码
作者: sgaizxt001 时间: 2010-7-20 23:14
比如:0000 0001是1,0000 0010是2,0000 0100是4;0000 0011是3,0000 0110是6,代表的是3*2
x<<y的意思就是x乘2的Y次方,
移位分左和右,左移把最高位去掉,最低位补0,右移则相反,但是机器运算有长度限制,当超过最大可运算数后会出现错误,假设某运算器的最大数是1111 1111,则1000 0000左移后则是0000 0000,此时就出错了
作者: zijian521500 时间: 2011-8-5 15:51
- @echo off
- :x
- set /p n=请输入2 的几次方:
- set /a num=1 "<<"n
- echo %num%
- goto x
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |