回复 7# CrLf
一样无异议.
JUST I THINK SO
对于max(a,b)和min(a,b), set /a 有这样一些实现:
min
a+(b-a)&(b-a>>31)
(a-b>>31)&a|(b-a>>31)&b
(a-b>>31)&a|~(a-b>>31)&b
max
a-(a-b)&(a-b>>31)
(a-b>>31)&b|(b-a>>31)&a
(a-b>>31)&b|~(a-b>>31)&a
大胆把大师级代码修改玩一下, 未定义的变量被看作 0 , 确实不能忘了, 呃, 我不想用除法!, 假设文档中并无负数. 以下- @echo off & setlocal enabledelayedexpansion
- set /a "M=1<<31^-1"
- for /f "tokens=1-3 delims=. " %%a in (a.txt) do (
- set /a "x=%%c,t=x-max[%%a.%%b],max[%%a.%%b]=x-(t&t>>31),p=min[%%a.%%b],p=p+(p-1>>31&M),t=p-x,min[%%a.%%b]=x+(t&t>>31)"
- )
-
- for /f "delims=max[]" %%a in ('set max[') do (
- echo %%a.!min[%%a]!.0-%%a.!max[%%a]!.255
- )
- pause
复制代码
|