[分享]在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

以上系原创脚本,如有雷同,纯属巧合..

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
若无特别注明,本站内容均属原创,转载请注明作者(chenall)和出处 chenall's Blog ,请勿用于任何商业用途