![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 22:22 |
共 48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 十进制转十六进制(位操作版) |
| 可打印版本 3,730 / 12 |
| 第1楼 0401 | 发表于 2007-01-07 06:23 |
| 中级用户 发帖 88 积分 435 | |
|
十进制转十六进制(位操作版) 能正确处理的最大数为2147483647,也就是31位2进制数,第32位就出错了,3742668 版主的那个版本也一样,输入2147483648就出错,虽然可以通过位移的次数来判断使精确度达到4294967295,但是我在应用上是碰不到这么大的数了,也就不多麻烦了。
|
|
| 第2楼 0401 | 发表于 2007-01-07 06:24 |
| 中级用户 发帖 88 积分 435 | |
|
==已被删除==
[ Last edited by 0401 on 2007-1-25 at 09:19 AM ] |
|
| 第3楼 electronixtar | 发表于 2007-01-07 08:46 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
楼主强人
|
|
| 第4楼 0401 | 发表于 2007-01-07 09:24 |
| 中级用户 发帖 88 积分 435 | |
Originally posted by electronixtar at 2007-1-7 08:46: 我是菜鸟,而且害羞。 用同一种方法再贴一个十进制转二进制的。 |
|
| 第5楼 lxmxn | 发表于 2007-01-07 17:15 |
| 版主 发帖 4,938 积分 11,386 | |
|
强人一个。 |
|
| 第6楼 redtek | 发表于 2007-01-07 21:04 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
超级顶!欣赏~~:)
|
|
| 第7楼 vlanmaster | 发表于 2007-01-12 06:55 |
| 初级用户 发帖 46 积分 100 | |
|
用的果然爽,厉害。
|
|
| 第8楼 ccwan | 发表于 2007-01-12 06:57 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
的是厉害。顶了
|
|
| 第9楼 vkill | 发表于 2007-03-13 07:50 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
0401 兄4楼的 十进制转二进制的 还可以改改的,后面的那 标签:cut0 属于多余
改为这样就好了
修改如下: 1: 1,1,30 因为你for /l %%i in (1,1,31) do (set/a a*=a) 就已经出错了 2: 加了一句 if %scanf% lss !a! exit/b ,因为数a 与 运算 比它大的数永远是0,既然这样还不如直接if %scanf% lss !a! exit/b结束,后面也就不去前面的 0 了 |
|
| 第10楼 xycoordinate | 发表于 2007-03-13 08:22 |
| 中级用户 发帖 228 积分 493 来自 安徽 | |
|
先加个"戳",不然下次用时找不到!
|
|
| 第11楼 genteman | 发表于 2007-11-02 12:44 |
| 初级用户 发帖 43 积分 90 | |
|
我来回复9楼
if %scanf% lss !a! exit/b 你的这段代码缺点很明显, 每做一次循环,都要判断一次,降低了程序效率 |
|
| 第12楼 genteman | 发表于 2007-11-02 12:57 |
| 初级用户 发帖 43 积分 90 | |
|
还有一个问题
“ 1,1,30 因为你for /l %%i in (1,1,31) do (set/a a*=a) 就已经出错了” 这里%%i=31的时候,a=2(30),并没有错,要到%%i=32时,a=2(31), 这时才有错 所以9楼的代码才是正确的! |
|
| 第13楼 ZJHJ | 发表于 2010-08-10 09:03 |
| 高级用户 发帖 374 积分 609 | |
|
我用取余的方法写了一个 十进制转十六进制,证实了最大极限处理确实是2147483647,即十六进制极限为7FFFFFFF,反转也同样说明了这个问题。应该说是CMD的极限。
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |