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的次方最快的方法就是使用移位.

  Quote:

  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


纯属灌水 呵呵  !