[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. ::按照定义描述编码
  2. @echo off
  3. set /p m=请输入m:
  4. set /p n=请输入n:
  5. set /a l=m+n
  6. rem echo 位数: %m%+%n%=%l%
  7. title %l%位的格雷码
  8. set /a sup=1^<^<%l%
  9. set /a sup-=1
  10. set /a l-=1
  11. rem echo 最大值: %sup%
  12. setlocal enabledelayedexpansion
  13. rem 一行输出信息
  14. set "Spring="
  15. set /a Bother=1^<^<n
  16. for /l %%z in (0,1,%sup%) do (
  17.   rem 获取二进制代码
  18.   rem 不知道批处理怎么取二进制,我只能一位一位地凑
  19.   set "BinCode="
  20.   for /l %%i in (0,1,%l%) do (
  21. set /a y=1^<^<%%i
  22.     set /a x=%%z^&!y!
  23.     if !x! gtr 0 (
  24.       set "BinCode=1!BinCode!"
  25.     ) else (
  26.       set "BinCode=0!BinCode!"
  27.     )
  28.   )
  29.   rem echo %%z 的二进制代码 !BinCode!
  30.   rem 二进制转换格雷码
  31.   set /a n1=!BinCode:~0,1!
  32.   rem 根据定义,第一位不变
  33.   set "GrayCode=!n1!"
  34.   rem 后面的每位分别是这位的值与前以为的异或XOR
  35.   for /l %%i in (1,1,%l%) do (
  36.     set /a n2=!BinCode:~%%i,1!
  37.     set /a x=!n2!^^^^!n1!
  38.     set "GrayCode=!GrayCode!!x!"
  39.     set /a n1=!n2!
  40.   )
  41.   rem echo %%z 的格雷码 !GrayCode!
  42.   rem 下面是输出信息控制
  43.   set "Spring=!Spring! !GrayCode!"
  44.   set /a flag=%%z
  45.   set /a flag+=1
  46.   rem 按题中样式%Bother%个一行
  47.   set /a flag=!flag!%%%Bother%
  48.   if !flag! equ 0  (
  49.     echo !Spring!
  50.     set "Spring="
  51.   )
  52. )
  53. endlocal
  54. pause>nul
复制代码
1

评分人数

TOP

返回列表