中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: cmd所能处理的最大数值 上一主题 | 下一主题
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『楼 主』:  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 ]



批处理之家新域名:www.bathome.net
2008-5-29 11:52
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

2^31是吧?



2008-5-29 12:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 3 楼』:  


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




致精致简!
2008-5-29 16:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
WANKOILZ
初级用户





积分 198
发帖 89
注册 2007-9-6
来自 重庆
状态 离线
『第 4 楼』:  

楼上的够简洁,学习了。
这点我感到不解:set /a d=^<^<30 当小于31的时候d的值是正数,而31的时候就变成负数了?

2008-5-29 18:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  



  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

   此帖被 +1 点积分    点击查看详情   
评分人:【 WANKOILZ 分数: +1  时间:2008-5-29 22:38




2008-5-29 22:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
WANKOILZ
初级用户





积分 198
发帖 89
注册 2007-9-6
来自 重庆
状态 离线
『第 6 楼』:  

了解了,感谢楼上的回答。
经测试, ~ 的作用好象是取相反数再减1。

2008-5-29 22:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: