Board logo

标题: 如何快速计算2的n次方??? [打印本页]

作者: zerocq     时间: 2007-1-18 06:45    标题: 如何快速计算2的n次方???
set /p n=取一个数字 然后怎么计算2的n次方?? 2^%n%好像不对啊,这句是把两个字符相连 有什么特殊符号吗?? 要一段长代码累加计算??:(

作者: lxmxn     时间: 2007-1-18 06:53
  帮我测试一下:
@echo off
:begin
cls
set num=&set result=
set /p num=计算2的n次方,请输入一个整数:
if %num%==0 (echo 1&pause&goto begin)
set /a num-=1
set /a result=2 "<<" %num%
echo %result%
pause
goto begin
exit/b0

作者: tao0610     时间: 2007-1-18 06:55
很多方法,比如for循环,GOTO循环.或者直接位计算,
@echo off
set/p n=请输入2的几次方: 
set/a num=1^<^<n
echo %num%
pause

作者: zerocq     时间: 2007-1-18 06:57
多谢楼上两位:)

作者: tao0610     时间: 2007-1-18 06:58
先我一步...当我灌水...

作者: lxmxn     时间: 2007-1-18 07:01
  灌什么水啊?你的方法简单,巧妙,怎么是灌水呢?

作者: everest79     时间: 2007-1-18 07:01
@echo off set /p x=LEK: set /p n=KEL: IF NOT "%x%%n%" == "" ( IF /i "%x%" == "q" ( GOTO :EOF) ELSE ( SET /A NUM=x,VAR=x,n-=1) ) ELSE GOTO :EOF for /l %%i IN (1,1,%n%) DO SET /A NUM*=%VAR% echo %NUM% pause>nul

作者: tao0610     时间: 2007-1-18 07:07
呵呵,其实原理一样,继续灌一帖..

作者: everest79     时间: 2007-1-18 07:13
我正加分类,结果结了一个没分啦

作者: NaturalJ0     时间: 2007-1-18 07:21
2 的 N 次方,就是 16 的 "N/4" 次方再乘上 "N%4" 个 2 16 的 "N/4" 次方就是 set /a Number=0x1"N/4 个零" 这样不知道是不是快些

作者: PPdos     时间: 2007-1-18 09:22
问:为何n不是引用%n%而能正常运行呢? @echo off set/p n=请输入2的几次方: set/a num=1^<^<%n% echo %num% pause

作者: everest79     时间: 2007-1-18 09:39
set /a条件下,可以省略引用字符 大部分是这样,不过当你set /a nn是还是得加上%

作者: jmz573515     时间: 2007-1-20 01:43
高! [ Last edited by jmz573515 on 2007-1-22 at 10:10 PM ]

作者: stornager     时间: 2007-4-2 03:58
set/a num=1^<^<%n% 此句1^<^<%n%是否在1~n中任取一个数.请搂主告知.???

作者: flyinspace     时间: 2007-4-2 04:01
啊。 他是做位运算

作者: 6622186     时间: 2007-4-5 12:08
可直接计算乘方, "1^<^<n" 是什么意思?

作者: chenall     时间: 2007-4-5 22:28
计算2的N次方,使用位操作的速度是最快的. 计算3的N次方就不行了. 因为2的二进制是10 2的2次方4的二进制是100 2的3次方8的二进制是1000 可以看出2的N次方就是将2左移N-1位.也就是1左移N位. 所以计算2的次方最快的方法就是使用移位.
  1. set /p n=计算2的N次方,请输入N:
  2. set /a "1<<%N%"
chenall 发表于: 2007-04-05 09:17

作者: 6622186     时间: 2007-4-6 02:11
谢谢16楼, 终于明白了什么是逻辑移位. 同时也可计算4,8,16, 的 n 次方了.

作者: zhoushijay     时间: 2007-4-6 05:14
@echo off set /p a=请输入一个数字: echo s=2^^%a%>1.vbs echo msgbox(s)>>1.vbs 1.vbs 纯属灌水 呵呵 !