已经解决通用和符号问题-
- @echo off&setlocal enabledelayedexpansion
- set/a len=1,n=1
- :rep
- set/a len=len+len,n=n^<^<len,1/n 2>nul&&goto :rep
- :lp
- (set n=
- set o=
- set s=
- set ns=
- echo.
- set /p n=输入一个整数:)
- (if "%n%"=="" goto :eof
- for /l %%a in (1,1,!len!) do (
- set/a m=n%%2,n=n^>^>1,m*=m
- set s=!s!!m!
- set o=!m!!o!
- set/a ns=^(ns^<^<1^)+m
- )
- echo 正二进制:!o! {%n%}
- echo 逆转输出:!s! {!ns!}
- goto :lp)
复制代码 真的还可以精简,把一些地方换成了按位运算,更快更简
但初始化还是保持用set,反正只有四行,按字数来算还更少一点。-
- @echo off&setlocal enabledelayedexpansion
- set/a len=1,n=1
- :rep
- set/a "len<<=1,n<<=len,1/n" 2>nul&&goto :rep
- :lp
- set n=&set o=&set s=&set ns=&echo.&set /p n=输入一个整数:
- (if "%n%"=="" goto :eof
- for /l %%a in (1,1,%len%) do (
- set/a "m=n&1,n>>=1,ns=ns<<1|m"
- set s=!s!!m!
- set o=!m!!o!
- )
- echo 正二进制:!o! {%n%}
- echo 逆转输出:!s! {!ns!}
- goto :lp)
复制代码
[ 本帖最后由 netbenton 于 2009-4-27 22:44 编辑 ] |