[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 aa77dd@163.com 于 2015-12-26 18:09 编辑

我用了一个位运算选择器:
令 t 的可选值为 0 或者 -1,
~t & a | t & b
上式的值: 当 t = 0, 得 a; 否则, 得 b

这个选择器可以多层嵌套
~t & a | t & (~t1 & b | t1 & c) 以此类推

这样多层嵌套后, 就可以实现在小范围内索引区间搜索, 最开始我也想用 for + if 的方式实现, 然后又觉得效率不高, 特别是批处理的 for 代码在退出前 都不能 break

但 set /a 构造 的这种多层嵌套选择器 是否 比 for + if 效率要高, 也只是我想当然, 实际上我并没有测试比较过

以下示例 在 5 个数中找出 不大于 x 的最大的一个数
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set "@1=18225"
  4. set "@2=17956"
  5. set "@3=17689"
  6. set "@4=17424"
  7. set "@5=17161"
  8. set "exp=0"
  9. for /L %%i in (5 -1 1) do (
  10.     set "exp=t=x-@%%i>>31,~t&@%%i|t&(!exp!)"
  11. )
  12. set exp
  13. set /a "x=17688,result=(%exp%)"
  14. set result
  15. pause
  16. exit
复制代码

TOP

返回列表