Board logo

标题: cmd所能处理的最大数值 [打印本页]

作者: bat-zw     时间: 2008-5-29 11:52    标题: cmd所能处理的最大数值

&&cmd在数值处理上有个上限,于是写下了这段计算其最大处理值的代码,以利新手
以后的操作:
@echo off&setlocal enabledelayedexpansion
set a=1
:begin
set /a a*=2,n+=1
set n=%a%
if %a% lss 0 (
   set /a n-=1
   set a=!n!&goto again
)
goto begin
:again
set /a a+=1,n+=1
set n=%a%
if %a% lss 0 (
   set /a n-=1
   echo cmd所能处理的最大数值为:!n!。
   pause>nul&goto :eof
)
goto again
[ Last edited by zw19750516 on 2008-5-29 at 12:08 PM ]
作者: HAT     时间: 2008-5-29 12:29
2^31是吧?
作者: 26933062     时间: 2008-5-29 16:01

@echo off
set /a d=1^<^<31,x="~d"
echo cmd所能处理的最小数值为 %d%
echo cmd所能处理的最大数值为  %x%
pause>nul

作者: WANKOILZ     时间: 2008-5-29 18:58
楼上的够简洁,学习了。
这点我感到不解:set /a d=^<^<30 当小于31的时候d的值是正数,而31的时候就变成负数了?
作者: HAT     时间: 2008-5-29 22:22


  Quote:
Originally posted by WANKOILZ at 2008-5-29 06:58 PM:
楼上的够简洁,学习了。
这点我感到不解:set /a d=^<^<30 当小于31的时候d的值是正数,而31的时候就变成负数了?

32位的操作系统,能表示的符号数范围是:
负2的31次方 到 正2的31次方减1
作者: WANKOILZ     时间: 2008-5-29 22:38
了解了,感谢楼上的回答。
经测试, ~ 的作用好象是取相反数再减1。