人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

批處理bat函數(shù):大數(shù)字加減乘除、時(shí)期時(shí)間計(jì)算、數(shù)字排序、進(jìn)制轉(zhuǎn)換等

發(fā)布日期:2021-12-13 15:44 | 文章來源:gibhub

發(fā)幾個(gè)我的函數(shù)

2009-02-20 日更新:修正加法函數(shù)中一處bug,
增加整數(shù)除法“函數(shù)”(內(nèi)勘多個(gè)標(biāo)簽,應(yīng)該不算標(biāo)準(zhǔn)的封裝)
2009-02-18 日更新:
更新乘法函數(shù),大大縮短代碼,并且效率大大提升,且不再受位數(shù)限制。
理論上只要積不超過變量賦值的最大位數(shù)就可以。
更新加法函數(shù):代碼略增,效率略為提高,且不再受位數(shù)限制。
更新減法函數(shù):代碼略增,效率提高,位數(shù)由200提升到1000位。
一、加法函數(shù) 任意位數(shù) 的正整數(shù) 進(jìn)行 加法計(jì)算
二、減法函數(shù) 可以對(duì) 200位 以內(nèi)正整數(shù) 進(jìn)行 減法計(jì)算
三、乘法函數(shù) 可以對(duì) 任意位數(shù) 的正整數(shù)進(jìn)行 乘法計(jì)算
四、計(jì)算批處理運(yùn)行時(shí)間函數(shù) 時(shí)間必須是24小時(shí)制,未考慮時(shí)間為00點(diǎn)的情況。
五、查詢指定天數(shù)前的日期(作者:Will Sort 出自:cn-dos )
六、數(shù)字排序函數(shù)
七、關(guān)于進(jìn)制轉(zhuǎn)換的函數(shù)
1、任意進(jìn)制互轉(zhuǎn)(只能處理cmd范圍內(nèi)的數(shù))
標(biāo)簽段以封裝,可直接調(diào)用,使用方法見標(biāo)簽上方的說明
為方便使用,標(biāo)簽以外的代碼作了界面美化等處理。使得代碼略顯臃腫。。。
2、二進(jìn)制轉(zhuǎn)十六進(jìn)制(封裝)(通過4位一段轉(zhuǎn)換,可處理超大數(shù))
3、十六進(jìn)制轉(zhuǎn)二進(jìn)制(封裝)(通過4位一段轉(zhuǎn)換,可處理超大數(shù))
4、二進(jìn)制轉(zhuǎn)十進(jìn)制(封裝)(只能處理cmd范圍內(nèi)的數(shù),小巧方便代碼中調(diào)用)
5、獲取10進(jìn)制數(shù)(含負(fù)數(shù))的 原碼、反碼、補(bǔ)碼(未封裝)(只能處理cmd范圍內(nèi)的值)
完全不懂計(jì)算機(jī),只理解為計(jì)算機(jī)中負(fù)數(shù)用補(bǔ)碼表達(dá)
代碼中二進(jìn)制數(shù)用32位顯示,超出32位的會(huì)出錯(cuò),
呵呵,不知道電腦中有沒有用32位以上表達(dá)的二進(jìn)制數(shù),哈哈外行話見笑了^_^
6、綜合以上對(duì)2、8、10、16進(jìn)制數(shù)進(jìn)行轉(zhuǎn)換、(未封裝)
顯示轉(zhuǎn)換后的2、8、10、16進(jìn)制數(shù)及 原碼、反碼、補(bǔ)碼

計(jì)算任意位數(shù)的正整數(shù)加法

@echo off
call :jia 354687654165435 35486456 ok
echo %ok%
pause
:jia 加法函數(shù)(封裝)by @隨風(fēng) @bbs.bathome.net
::計(jì)算任意位數(shù)的正整數(shù)加法
setlocal enabledelayedexpansion&set f=&set "t="
set var1=%~1&set var2=%~2&set /a j=0,n1=0,n2=0
for /l %%a in (0 1 9) do (set vard1=&set "vard2="
set var1=!var1:%%a= %%a !&set var2=!var2:%%a= %%a !)
for %%a in (!var1!)do (set/a n1+=1&set vard1=%%a !vard1!)
for %%a in (!var2!)do (set/a n2+=1&set vard2=%%a !vard2!)
(if !n1! lss !n2! (set var1=%var2%&set "var2=%var1%"
set vard1=%vard2%&set vard2=%vard1%))&set "var2=!var2: =!"
for %%a in (!vard1!) do (if "!var2!"=="" set /a var2=0
set /a a=%%a+!var2:~-1!+j&set t=!a:~-1!!t!&set "a=0!a!"
set "j=!a:~-2,1!"&set var2=!var2:~0,-1!)
if !j! neq 0 set "t=!j!!t!"
Endlocal&set %~3=%t%&goto :EOF

計(jì)算1000位以內(nèi)的正整數(shù)減法

@echo off
call :jian 354687654165435 35486456 ok
echo %ok%
pause
:jian 減法函數(shù)(封裝)by @隨風(fēng) @bbs.bathome.net
::計(jì)算1000位以內(nèi)的正整數(shù)減法
setlocal enabledelayedexpansion&&set t=&set f=&set "lin="
for /l %%a in (1 1 10) do set "lin=0000000000!lin!"
set lin=!lin!!lin!!lin!!lin!!lin!&set "lin=!lin!!lin!"
set var1=!lin!%~1&set var2=!lin!%~2&set vard1=&set/a j=0
set var1=!var1:~-1000!&set "var2=!var2:~-1000!"
if "!var1!" lss "!var2!" (set var1=%~2&set "var2=%~1"
set "f=-") else set var1=%~1&set "var2=%~2"
for /l %%a in (0 1 9) do set "var1=!var1:%%a= %%a !"
for %%a in (!var1!) do set "vard1=%%a !vard1!"
for %%a in (!vard1!) do (if "!var2!"=="" set/a var2=0
set /a a=%%a-j,b=!var2:~-1!
if !a! lss !b! (set /a a+=10,j=1)else set /a j=0
set /a w=a-b&set t=!w!!t!&set var2=!var2:~0,-1!)
for /f "tokens=* delims=0" %%a in ("!t!") do (
if "%%a"=="" (set t=0) else set "t=%%a")
Endlocal&set %~3=%f%%t%&goto :EOF

計(jì)算任意位數(shù)的正整數(shù)乘法

@echo off
call :cen 354687654165435 35486456 ok
echo %ok%
pause
:cen 乘法函數(shù)(封裝)by @隨風(fēng) @bbs.bathome.net
::計(jì)算任意位數(shù)的正整數(shù)乘法
setlocal enabledelayedexpansion
if "%~1"=="0" Endlocal&set %~3=0&goto :EOF
if "%~2"=="0" Endlocal&set %~3=0&goto :EOF
set f=&set jia=&set ji=&set /a n1=0,n2=0
set vard1=&set "vard2="&set var1=%~1&set "var2=%~2"
for /l %%a in (0 1 9) do (
set var1=!var1:%%a= %%a !&set var2=!var2:%%a= %%a !)
for %%a in (!var1!)do (set /a n1+=1&set vard1=%%a !vard1!)
for %%a in (!var2!)do (set /a n2+=1&set vard2=%%a !vard2!)
if !n1! gtr !n2! (set vard1=%vard2%&set vard2=%vard1%)
for %%a in (!vard1!) do (set "t="&set /a j=0
for %%b in (!vard2!) do (if "!jia!"=="" set /a jia=0
set /a a=%%a*%%b+j+!jia:~-1!&set "t=!a:~-1!!t!"
set a=0!a!&set "j=!a:~-2,1!"&set jia=!jia:~0,-1!)
set "ji=!t:~-1!!ji!"
if "!j:~0,1!"=="0" (set ss=) else set "ss=!j:~0,1!"
set jia=!ss!!t:~0,-1!)
if not "!j:~0,1!"=="0" set "t=!j:~0,1!!t!"
set "ji=!t!!ji:~1!"
Endlocal&set %~3=%ji%&goto :EOF

500位內(nèi)整數(shù)除法函數(shù)

@echo off
set suru=000012/001200
call :cu0  %suru:/= % ok
echo. %ok%
pause
exit
:cu0 500位內(nèi)整數(shù)除法函數(shù)(封裝)by @隨風(fēng) bbs.bathome.net
::函數(shù)內(nèi)有 cu1 cu2 cu3 cu4 四個(gè)標(biāo)簽,引用時(shí)需注意
setlocal enabledelayedexpansion&set "lin=00000"
set /a zongw=1000,cs1w=0,cs2w=0,falg=0,x=0
if "!str!"=="1" Endlocal&set %~3=%ff%!num!&goto :EOF
if "%~1"=="0" set sang=0&goto cu4
if "!str!"=="0" set sang=以零為除數(shù)的錯(cuò)誤。&goto cu4
if not defined xiaosu set /a xiaosu=10
for /l %%a in (1 1 5) do set "lin=!lin!!lin!!lin!"
set sang=&set ppp=&set var1=%~1&set "var2=%~2"
for /f "tokens=* delims=0" %%a in ("!var1!")do set var1=%%a
for /f "tokens=* delims=0" %%a in ("!var2!")do set var2=%%a
for /l %%a in (0 1 9)do (set "var1=!var1:%%a= %%a !"
set "var2=!var2:%%a= %%a !")
for %%a in (!var1!) do set /a cs1w+=1
for %%a in (!var2!) do set /a cs2w+=1
for /l %%a in (1 1 10) do (set t=&set cs=%~2&set/a j=0
for /l %%b in (1 1 !cs2w!) do (set /a a=%%a*!cs:~-1!+j
set t=!a:~-1!!t!&set a=0!a!&set "j=!a:~-2,1!"
set cs=!cs:~0,-1!&set cs%%a=&set "bj%%a=")
if !j! neq 0 (set cs%%a=!lin!!j!!t!&set "bj%%a=!j!!t!"
) else set cs%%a=!lin!!t!&set "bj%%a=!t!"
set "cs%%a=!cs%%a:~-%zongw%!")
set var2=!lin!!var2: =!&set "var2=!var2:~-%zongw%!"
set /a cswc=cs1w-cs2w&set "var1=!var1: =!"
if !cswc! lss 0 (set cswc=!cswc:-=!&set/a flag=1
for /l %%a in (1 1 !cswc!)do (
if %%a leq 11 set sang=0!sang!&set /a x=cswc-1
set "var1=!var1!0")
set "sang=!sang:~0,1!.!sang:~1!")
set ppp=!var1:~0,%cs2w%!&set "var1=!var1:~%cs2w%!"
if !flag! equ 1 (set /a bul=1) else set /a bul=0
goto cu2
:cu1
if not defined var1 (set "var1=0"
if not defined ppp goto cu4
if !flag! equ 0 (set sang=!sang!.&set /a flag=1))
set/a bul=1&set ppp=!ppp!!var1:~0,1!&set "var1=!var1:~1!"
:cu2
if !x! geq %xiaosu% goto cu4
set pvar1=!lin!!ppp!&set "pvar1=!pvar1:~-%zongw%!"
if "!pvar1!" lss "!var2!" (
if !bul! equ 1 (set sang=!sang!0&set /a bul=0
if !flag! equ 1 set /a x+=1)
if "!ppp:~0,1!"=="0" set "ppp="
goto cu1)
if !flag! equ 1 set /a x+=1
set /a bul=0
::計(jì)算商
for /l %%a in (1 1 10) do (
if "!cs%%a!" equ "!pvar1!" (
set "sang=!sang!%%a"&set "yu=!bj%%a!"&goto cu3)
if "!cs%%a!" gtr "!pvar1!" (set /a s=%%a-1
set "sang=!sang!!s!"&set yu=!t!&goto cu3)
set "t=!bj%%a!")
:cu3 計(jì)算差
set cjs=!ppp!&set cj1=&set m=&set/a jjj=0
for /l %%a in (0 1 9) do set "cjs=!cjs:%%a= %%a !"
for %%a in (!cjs!) do set "cj1=%%a !cj1!"
for %%a in (!cj1!) do (if "!yu!"=="" set/a yu=0
set /a a=%%a-jjj,b=!yu:~-1!
if !a! lss !b! (set /a a+=10,jjj=1)else set/a jjj=0
set /a w=a-b&set m=!w!!m!&set yu=!yu:~0,-1!)
for /f "tokens=* delims=0" %%m in ("!m!") do (
if "%%m"=="" (set m=0) else set "m=%%m")
if !m! equ 0 (
if "!var1:0=!"=="" set sang=!sang!!var1!&goto cu4
set ppp=&goto cu1) else set "ppp=!m!"
goto cu2
:cu4
if "!sang:~0,1!"=="." set "sang=0!sang!"
Endlocal&set %~3=%ff%%sang%&goto :EOF

計(jì)算時(shí)間差

@echo off
set t=%time%
call :time0 "%t%" "%time%" ok
echo %ok%
pause
:time0  計(jì)算時(shí)間差 (封裝)
@echo off&setlocal&set /a n=0&rem code 隨風(fēng) @bbs.bathome.net
for /f "tokens=1-8 delims=.: " %%a in ("%~1:%~2") do (
set /a n+=10%%a%%100*360000+10%%b%%100*6000+10%%c%%100*100+10%%d%%100
set /a n-=10%%e%%100*360000+10%%f%%100*6000+10%%g%%100*100+10%%h%%100)
set /a s=n/360000,n=n%%360000,f=n/6000,n=n%%6000,m=n/100,n=n%%100
set "ok=%s% 小時(shí) %f% 分鐘 %m% 秒 %n% 毫秒"
endlocal&set %~3=%ok:-=%&goto :EOF

可以處理0開頭的數(shù)、重復(fù)數(shù)及200位以內(nèi)的超大整數(shù)(封裝)

@echo off
:start
setlocal enabledelayedexpansion&cls
for /l %%a in (1 1 10) do set str=!str! !random!
echo.&echo %str%
call :sort "%str%" ok
echo  %ok%
pause>nul
endlocal&goto start
:sort 可以處理0開頭的數(shù)、重復(fù)數(shù)及200位以內(nèi)的超大整數(shù)(封裝)
@echo off&setlocal enabledelayedexpansion
for /f "delims==" %%a in ('set p. 2^>nul')do set "%%a="
for /l %%a in (1 1 20) do set "p.lin=0000000000!p.lin!"
for %%a in (%~1) do (set s=!p.lin!%%a&set "s=!s:~-200!"
if defined p...!s! (set p..%%a=!p..%%a! %%a
set p...!s!=!p..%%a! %%a) else (set p...!s!=%%a))
for /f "tokens=2 delims==" %%a in ('set p...') do (
for %%i in (%%a) do set "p.ok=!p.ok! %%i")
endlocal&set %~2=%p.ok:~1%&goto :EOF

計(jì)算指定天數(shù) 前/后 的日期及星期

@echo off
:start
setlocal&cls
set /p tian=請(qǐng)指定要追溯的天數(shù):&echo\
call :Date2Day "%date%" %tian% ok
echo %ok%
endlocal&pause>nul&goto start
:Date2Day 計(jì)算指定天數(shù) 前/后 的日期及星期 (封裝)
@echo off&setlocal ENABLEEXTENSIONS
for /f "tokens=1-3 delims=/-:\, " %%a in ('echo/%~1') do (
set /a yy=%%a,mm=100%%b%%100,dd=100%%c%%100)
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
set /a i=j-%~2,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
for %%a in (一/1 二/2 三/3 四/4 五/5 六/6 日/0) do (
for /f "tokens=1,2 delims=/" %%i in ("%%a")do set %%i=%%j&set ".%%j=%%i")
if %~2 gtr 0 (set /a d=^(7-%~2%%7+%date:~-1%^)%%7&set x=前) else (
set /a d=^(~%~2+1+%date:~-1%^)%%7&set x=后)
call set "d=星期%%.%d%%%"
endlocal&set %~3=%yy%-%mm%-%dd% %d%&goto :EOF

進(jìn)制轉(zhuǎn)換(函數(shù))

1、任意進(jìn)制互轉(zhuǎn)

@echo off&color 1f&set /a q=10,h=2
title 任意進(jìn)制互轉(zhuǎn) 默認(rèn):%q%進(jìn)制轉(zhuǎn)%h%進(jìn)制
:start
setlocal&echo.&echo. 被轉(zhuǎn)換的數(shù) 被轉(zhuǎn)換數(shù)的進(jìn)制 需轉(zhuǎn)換成的進(jìn)制
echo.&echo. 如:95 16 10  表示將 16進(jìn)制數(shù)95 轉(zhuǎn)換 為10進(jìn)制數(shù)
echo.&echo. 參數(shù)可用分割符為  空格 / + - \  如:95/16/10 或95+16+10
echo.&echo. 默認(rèn)將 10進(jìn)制 轉(zhuǎn)換為 2進(jìn)制(即上例中如果不輸入 16 10 則默認(rèn)為 10 2)
echo.&set /p num= 請(qǐng)輸入需轉(zhuǎn)換的數(shù) &cls
if not defined num endlocal&goto start
for /f "tokens=1-3 delims=/+-\ " %%a in ("%num%") do (
 set "num=%%a"
 if not "%%b"=="" if not "%%c"=="" set /a q=%%b,h=%%c
)
call :nxn "%num%" ok %q% %h%
for /l %%a in (1 1 12)do (
if %%a equ 4 (
echo. %q%進(jìn)制轉(zhuǎn)%h%進(jìn)制 結(jié)果
echo.&echo. %num% = %ok%
 )else echo\
)
set /a w=%random%%%2
if %w% equ 1 (set f=1f) else (set f=df)
color %f%&endlocal&goto start
::函數(shù)使用方法:call :nxn "98" ok 10 2
::call :nxn "被轉(zhuǎn)換的數(shù)" 保存結(jié)果的變量名 被轉(zhuǎn)換數(shù)的進(jìn)制 需轉(zhuǎn)換成的進(jìn)制
::默認(rèn)將 10進(jìn)制 轉(zhuǎn)換為 2進(jìn)制(即上例中不輸入 10 2)
:nXn 任意進(jìn)制互轉(zhuǎn) @隨風(fēng) @bbs.bathome.net(封裝)
@echo off&setlocal enabledelayedexpansion
if "%~4"=="" (set /a q=10,h=2)else (set /a q=%~3,h=%~4)
set "str=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for /l %%a in (0 1 35)do set .%%a=!str:~%%a,1!&set ".!str:~%%a,1!=%%a"
set sun=&set jie=&set "var=%~1"&set /a nnn=1,num=0
for /l %%a in (0 1 100) do (
if not "!var:~%%a,1!"=="" (call set sun=%%.!var:~%%a,1!%% !sun!))
for %%a in (!sun!) do set /a num=%%a*nnn+num,nnn*=q
:10進(jìn)制轉(zhuǎn)n進(jìn)制
set /a yu=num%%h,num/=h
set "jie=!.%yu%!!jie!"&if !num! gtr 0 goto 10進(jìn)制轉(zhuǎn)n進(jìn)制
endlocal&set %~2=%jie%&goto :EOF

二進(jìn)制轉(zhuǎn)十六進(jìn)制(封裝)(通過4位一段轉(zhuǎn)換,可處理超大數(shù))

@echo off&color 1f&title 二進(jìn)制 轉(zhuǎn) 十六進(jìn)制
call :2x16 "11111111 11111111 11111111 11111110" ok
echo %ok%
pause
::以4位一段,分別轉(zhuǎn)換為十六進(jìn)制,不必考慮超大數(shù)問題
:2x16 二進(jìn)制 轉(zhuǎn) 十六進(jìn)制  @隨風(fēng) @bbs.bathome.net (封裝)
@echo off&setlocal enabledelayedexpansion
set "str=0123456789ABCDEF"
set k=&set kk=&set xx=&set "x=000%~1"
set x=!x:0= 0!&set x=!x:1= 1!&set /a jj=0,ss=1
for %%a in (!x!) do set "xx=%%a !xx!"
for %%a in (!xx!) do (set /a jj+=%%a*ss,ss=ss*2
if !ss! equ 16 set k=!jj! !k!&set /a jj=0,ss=1)
for %%a in (!k!) do set kk=!kk!!str:~%%a,1!
endlocal&set %~2=%kk%&goto :EOF

十六進(jìn)制轉(zhuǎn)二進(jìn)制(封裝)(通過4位一段轉(zhuǎn)換,可處理超大數(shù))

@echo off&color 1f&title 十六進(jìn)制 轉(zhuǎn) 二進(jìn)制
set mmm=bfa35e7d8
call :16x2 %mmm% ok
echo.&echo  十六進(jìn)制 %mmm%
echo.&echo 二進(jìn)制 %ok%
echo.&pause
::以4位一段,分別轉(zhuǎn)換為二進(jìn)制,不必考慮超大數(shù)問題
:16x2 十六進(jìn)制 轉(zhuǎn) 二進(jìn)制  @隨風(fēng) @bbs.bathome.net (封裝)
@echo off&setlocal enabledelayedexpansion
set str=0123456789abcdef&set ok=&set "num=%~1"
for /l %%a in (0 1 15) do (set ".!str:~%%a,1!=%%a"
call set "num=%%num:!str:~%%a,1!= !str:~%%a,1!%%")
for %%i in (!num!) do (set /a x=0,n=!.%%i!
for %%a in (8 4 2 1) do (set /a x+=%%a
if !n! geq !x! (set ok=!ok!1) else (
set ok=!ok!0&set /a x-=%%a)))
endlocal&set %~2=%ok%&goto :EOF

二進(jìn)制轉(zhuǎn)十進(jìn)制(封裝)(只能處理cmd范圍內(nèi)的數(shù),小巧方便代碼中調(diào)用)

@echo off
call :2x10 01100100 ok
echo %ok%
pause
:2x10  2進(jìn)制轉(zhuǎn) 10進(jìn)制 @隨風(fēng) @bbs.bathome.net (封裝)
@echo off&setlocal enabledelayedexpansion
set /a nnn=1,num=0&set nn=&set "n=%~1"
set "n=!n:0= 0!"&set "n=!n:1= 1!"
for %%a in (!n!) do set "nn=%%a !nn!"
for %%a in (!nn!) do set /a num+=%%a*nnn,nnn*=2
endlocal&set %~2=%num%&goto :EOF

獲取10進(jìn)制數(shù)(含負(fù)數(shù))的 原碼、反碼、補(bǔ)碼(未封裝)

@echo off&color 1f&title 獲取10進(jìn)制數(shù)的 原碼、反碼、補(bǔ)碼
::獲取10進(jìn)制數(shù)的 原碼、反碼、補(bǔ)碼
::計(jì)算機(jī)中 負(fù)數(shù)用補(bǔ)碼表達(dá)
::補(bǔ)碼:反碼+1
::反碼:將二進(jìn)制數(shù)(原碼)按位取反 (即:1變0、0變1)
::原碼:一個(gè)整數(shù),按照絕對(duì)值大小轉(zhuǎn)換成的二進(jìn)制數(shù),稱為原碼。
::個(gè)人理解為在計(jì)算機(jī)中表達(dá)負(fù)數(shù)的二進(jìn)制數(shù)叫補(bǔ)碼
::所以以下代碼中,若輸入的是負(fù)數(shù)則結(jié)果中補(bǔ)碼代表該數(shù)
@echo off&rem @隨風(fēng) @bbs.bathome.net @2009-01-15
:start
setlocal enabledelayedexpansion
for /l %%a in (1 1 15) do set "lin=00000!lin!"
echo.&echo.&set /p y10= 請(qǐng)輸入一個(gè)10進(jìn)制數(shù)可以為負(fù)數(shù) &cls
if !y10! lss 0 (set /a n="~y10"+1,c=1) else set /a n=y10,c=1
:10x2 將10進(jìn)制轉(zhuǎn)成2進(jìn)制 原碼
set /a y=n%%2,n/=2&set "j=!y!!j!"&if !n! gtr 0 goto 10x2
set j=!lin!!j!&set "j=!j:~-32!"
set ss=!j:0= 0!&set "ss=!ss:1= 1!"
:: 獲取反碼
for %%a in (%ss%) do set /a n="^!%%a"&set "f=!f!!n!"
set f=!lin!!f!&set f=!f:~-32!&set "ss=!f!"
:buma 獲取補(bǔ)碼
set /a m=!ss:~-1!+c
if !m! gtr 1 (set c=1&set b=0!b!)else set c=0&set "b=!m!!b!"
set "ss=!ss:~0,-1!"
if defined ss goto buma
echo.
echo  10進(jìn)制數(shù)  %y10%&echo.
echo原碼  %j:~-32,8% %j:~-24,8% %j:~-16,8% %j:~-8%
echo反碼  %f:~-32,8% %f:~-24,8% %f:~-16,8% %f:~-8%
echo補(bǔ)碼  %b:~-32,8% %b:~-24,8% %b:~-16,8% %b:~-8%
endlocal&goto start

轉(zhuǎn)換 2、8、10、16、進(jìn)制數(shù)并顯示2進(jìn)制 原碼、反碼、補(bǔ)碼(未封裝)

@echo off
::轉(zhuǎn)換 2、8、10、16、進(jìn)制數(shù)并顯示2進(jìn)制 原碼、反碼、補(bǔ)碼
::計(jì)算機(jī)中 負(fù)數(shù)用補(bǔ)碼表達(dá)
::補(bǔ)碼:反碼+1
::反碼:將二進(jìn)制數(shù)(原碼)按位取反 (即:1變0、0變1)
::原碼:一個(gè)整數(shù),按照絕對(duì)值大小轉(zhuǎn)換成的二進(jìn)制數(shù),稱為原碼。
::個(gè)人理解為在計(jì)算機(jī)中表達(dá)負(fù)數(shù)的二進(jìn)制數(shù)叫補(bǔ)碼
::完全不懂計(jì)算機(jī),只理解為計(jì)算機(jī)中負(fù)數(shù)用補(bǔ)碼表達(dá)
::代碼中二進(jìn)制數(shù)用32位顯示,超出32位的會(huì)出錯(cuò)
::只能處理cmd范圍內(nèi)的數(shù)
@echo off&title 轉(zhuǎn)換 2、8、10、16、進(jìn)制數(shù)并顯示2進(jìn)制 原碼、反碼、補(bǔ)碼
::@隨風(fēng) @bbs.bathome.net @2009-1-12
set "str=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
set "color1=1f&set color2=df"&color 1f
for /l %%a in (0 1 35) do (
call set ".%%a=%%str:~%%a,1%%"
call set ".%%str:~%%a,1%%=%%a"
)
:start
setlocal enabledelayedexpansion&color %color1%
echo.
echo. ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
echo. ┃  ┃
echo. ┃輸入格式:需轉(zhuǎn)換的數(shù)+該數(shù)的進(jìn)制(可用分割符 / \ + - 空格)┃
echo. ┃  ┃
echo. ┃默認(rèn)輸入的為10進(jìn)制數(shù)、也可以是2、8、16進(jìn)制、但必須指明進(jìn)制┃
echo. ┃  ┃
echo. ┃如:需轉(zhuǎn)換16進(jìn)制 2afd 則輸入 2afd+16  10進(jìn)制數(shù)則不需要指明┃
echo. ┃  ┃
echo. ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
echo.&set /p num= 請(qǐng)輸入需轉(zhuǎn)換的數(shù)  &cls
if not defined num endlocal&goto start
for /f "tokens=1,2 delims=/\+- " %%a in ("%num%") do (
set "n0=%%a"
if "%%b"=="" (set jz=10) else set /a jz=%%b
)
echo.&echo 被轉(zhuǎn)換的數(shù)為: !jz!進(jìn)制數(shù)  !n0!&echo.
if !jz! equ 16 (set /a n10=0x!n0!) else (
if !jz! equ 10 (set n10=!n0!) else (
if !jz! equ 8 (set /a n10=0!n0!) else (
set /a nnn=1,n10=0&call :2x10 !n0!
)))
for %%a in (16 10 8 2) do call :10進(jìn)制轉(zhuǎn)n進(jìn)制 !n10! %%a
echo.&call :yuan&echo.
endlocal&set color1=%color2%&set "color2=%color1%"
goto start
:10進(jìn)制轉(zhuǎn)n進(jìn)制
set /a yu=n10%%%~2,n10/=%~2
set "jie=!.%yu%!!jie!"&if !n10! gtr 0 goto 10進(jìn)制轉(zhuǎn)n進(jìn)制
set "xs=%~2"
echo !xs:~-5! 進(jìn)制  !jie!
set d2=!jie!&set jie=&set "n10=%~1"
goto :EOF
:2x10  2進(jìn)制轉(zhuǎn)10進(jìn)制
set /a n10+=!n0:~-1!*nnn,nnn*=2
set "n0=!n0:~0,-1!"
if defined n0 goto 2x10
goto :EOF
:yuan
for /l %%a in (1 1 15) do set lin=00000!lin!
set j=!lin!!d2!&set "j=!j:~-32!"
set ss=!j:0= 0!&set "ss=!ss:1= 1!"
:: 獲取反碼
for %%a in (%ss%) do set /a n="^!%%a"&set "f=!f!!n!"
set f=!lin!!f!&set f=!f:~-32!&set "ss=!f!"
set /a c=1
:buma 獲取補(bǔ)碼
set /a m=!ss:~-1!+c
if !m! gtr 1 (set c=1&set b=0!b!)else set c=0&set "b=!m!!b!"
set "ss=!ss:~0,-1!"
if defined ss goto buma
echo 原碼  %j:~-32,8% %j:~-24,8% %j:~-16,8% %j:~-8%
echo 反碼  %f:~-32,8% %f:~-24,8% %f:~-16,8% %f:~-8%
echo 補(bǔ)碼  %b:~-32,8% %b:~-24,8% %b:~-16,8% %b:~-8%
goto :EOF

到此這篇關(guān)于批處理bat函數(shù):大數(shù)字加減乘除、時(shí)期時(shí)間計(jì)算、數(shù)字排序、進(jìn)制轉(zhuǎn)換等的文章就介紹到這了,更多相關(guān)bat數(shù)值計(jì)算內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部