标题: 如何快速计算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: |
- set /p n=计算2的N次方,请输入N:
- 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
纯属灌水 呵呵 !