Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (SET \n=^^^
- %= This defines an escaped Line Feed - DO NOT ALTER =%
- )
- :: addition - group values by 8 digits, add values, collect carry, assemble answer
- :: %ADD% Sum=Integer1+Integer2
- SET ADD=FOR %%# IN (1 2)DO IF %%#==2 (%\n%
- SET N=%\n%
- SET W=0%\n%
- FOR /F "tokens=1-3 delims==+ " %%A IN ("!##!")DO (%\n%
- SET V=%%A%\n%
- SET #1=000000000000000%%B%\n%
- SET #2=000000000000000%%C)%\n%
- FOR /L %%A IN (8,8,16)DO (%\n%
- SET/A T=W+1!#1:~-%%A,8!+1!#2:~-%%A,8!,W=T/300000000%\n%
- SET N=!T:~1!!N!)%\n%
- FOR /F "tokens=1* delims=0" %%A IN ("!V!0!W!!N!")DO (%\n%
- ENDLOCAL%\n%
- SET %%A=%%B)%\n%
- )ELSE SETLOCAL EnableDelayedExpansion^&SET ##=
- :: subtraction - only subtract lesser from greater, all non-positive results are zero.
- :: %SUB% Sum=Integer1-Integer2
- SET SUB=FOR %%# IN (1 2)DO IF %%#==2 (%\n%
- SET N=%\n%
- SET W=0%\n%
- FOR /F "tokens=1-3 delims==- " %%A IN ("!##!")DO (%\n%
- SET V=%%A%\n%
- SET #1=000000000000000%%B%\n%
- SET #2=000000000000000%%C)%\n%
- FOR /L %%A IN (8,8,16)DO (%\n%
- SET/A T=3!#1:~-%%A,8!-1!#2:~-%%A,8!+W,W=T/200000000-1%\n%
- SET N=!T:~1!!N!)%\n%
- FOR /F "tokens=1* delims=0" %%A IN ("!V!0!N!")DO (%\n%
- ENDLOCAL%\n%
- SET %%A=%%B)%\n%
- )ELSE SETLOCAL EnableDelayedExpansion^&SET ##=
- :: %CMP% Integer1 Integer2
- :: returns result in both ERRORLEVEL and return variable CMP_
- :: 0 if int1<int2, 1 if int1=int2, >1 if int1>int2
- SET CMP=FOR %%# IN (1 2)DO IF %%#==2 (%\n%
- FOR /F "tokens=1-2" %%A IN ("!##!")DO (%\n%
- SET #1=000000000000000%%A%\n%
- SET #2=000000000000000%%B)%\n%
- FOR /F "tokens=1-2" %%A IN ("!#1:~-16! !#2:~-16!")DO (ENDLOCAL%\n%
- IF "%%A" LSS "%%B" SET CMP_=0^&COLOR%\n%
- IF "%%A" EQU "%%B" SET CMP_=1^&COLOR 00%\n%
- IF "%%A" GTR "%%B" SET CMP_=2^&SET/A=2^>NUL)%\n%
- )ELSE SETLOCAL EnableDelayedExpansion^&SET ##=
- ::by CirothUngol
Advertisement