找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: lhjoanna

【出题】批处理中的位运算应用和提高

[复制链接]
发表于 2010-4-30 10:44:44 | 显示全部楼层

回复 12楼 的帖子

每两种状态间改变一位

也许是说的  每相邻两种状态 之间只改变一位。
到百度改词条,留名


额 我回去百度百科看 ,上面是这样写的呵
而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化。

[ 本帖最后由 523066680 于 2010-4-30 10:45 编辑 ]
发表于 2010-5-1 12:38:11 | 显示全部楼层
处理结果怎么和楼主贴图不一样
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p m=请输入m:
  3. set /p n=请输入n:
  4. set /a "l=m+n,p=1<<l,p-=1,l-=1,t=1<<n"
  5. for /l %%a in (0,1,%p%) do (
  6.     set /a r=%%a%%t
  7.     if !r! equ 0 if defined Gray echo !Gray!&set "Gray="
  8.     set b=&set "c="
  9.     set "a=%%a"
  10.     for /l %%i in (0,1,!l!) do set/a "n=a&1,a>>=1"&set "b=!n!!b!"
  11.     for /l %%i in (!l!,-1,1) do (
  12.         set/a "n=%%i-1"
  13.         for %%j in (!n!) do set /a "n=!b:~%%i,1!^^!b:~%%j,1!"
  14.         set "c=!n!!c!"
  15.     )
  16.     set "Gray=!Gray! !b:~,1!!c!"
  17. )
  18. if defined Gray echo !Gray!
  19. pause
复制代码
发表于 2010-5-2 01:19:36 | 显示全部楼层
效率高点不
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p m=请输入m:
  3. set /p n=请输入n:
  4. set /a "l=m+n-1,p=(1<<m+n)-1,t=1<<n"
  5. for /l %%i in (0,1,%p%) do (
  6.     set /a r=%%i%%t
  7.     if !r! equ 0 if defined Gray echo !Gray!&set "Gray="
  8.     set "b="
  9.     set /a "a=%%i>>1^%%i"
  10.     for /l %%j in (0,1,!l!) do set/a "n=a&1,a>>=1"&set "b=!n!!b!"
  11.     set "Gray=!Gray! !b!"
  12. )
  13. if defined Gray echo !Gray!
  14. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 19:16 , Processed in 0.010118 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表