[分享]在CMD中使用位运算转换目标数字到二进制数.
发表于把一个十进制转成2进制的常分规方法是,一直除2求余.
这里介绍另一种方法,
一个把数值转换成二进制数的批处理脚本.
批处理加参数使用.支持把10,16,或8进制数转成二进制,其中16进制以0X开头,8进制以0开头.
@echo off
::来源: http://chenall.net
SETLOCAL
::初使化变量并检测输入的数字是否合法
::VV最终结果保留值,N从0开始的值
set/A VV=0x7fffffff-%1 || goto :eof
IF %VV% lss 0 (echo.无效数字.目前只支持32位正整数的计算.&goto :eof)
set VV=
SET N=0
::生成二进制数的函数.
:LOOP
:: 原理很简单.通过位运算符"或"对比来确定某位的值.
:: 例子:
:: 9的二进制: 1001
:: 分别和1,2,4,8进行"或运算"确定对应位的值.
:: 其中1,2,4,8,分别对应二进制1,10,100,1000
::
set /a a="(%1|(1<<%N%))-%1"
if %a% GTR %1 goto :完成
if %a% EQU 0 (set VV=1%VV%) ELSE (SET VV=0%VV%)
SET /AN+=1
GOTO :LOOP
:完成
echo.输入的数字: %1
echo.得到二进制: %VV%
ENDLOCAL
goto :eof
以上系原创脚本,如有雷同,纯属巧合..