注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

delphi 格雷码转换为二进制 二进制转化为格雷码  

2014-11-22 23:46:11|  分类: delphixe7 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
//二进制码转换成格雷码
function DecimalToGray(Decimal: String): String;
Var
  I: Integer;
  tmGray, tm: String;
  m1, m2, m: Integer;
begin
  tm := Decimal;
  tmGray := LeftStr(Decimal, 1);       //保留自然二进制码的最高位作为格雷码的最高位
  for I := 1 to Length(Decimal) - 1 do
  begin
    m1 := StrToInt(MidStr(tm, 1, 1));   //二进制码的高位
    m2 := StrToInt(MidStr(tm, 2, 1));   //次高位相异或
    m := m1 xor m2;                     //二进制码的高位与次高位相异或  余下以此类推
    tmGray := tmGray + IntToStr(m);
    tm := MidStr(tm, 2, Length(tm) - 1);
  end;
  Result := tmGray;
end;

//格雷码转换为二进制码
function GrayToDecimal(Gray: String): String;
Var
  I: Integer;
  tmGray, tm: String;
  m1, m2, m: Integer;
begin
  tm := Gray;
  tmGray := LeftStr(Gray, 1);         //保留格雷码的最高位作为二进制码的最高位
  m1 := StrToInt(MidStr(tm, 1, 1));   //格雷码的高位
  m2 := StrToInt(MidStr(tm, 2, 1));   //格雷码次高位
  m := m1 xor m2;                     //第一次格雷码的左1位与格雷码左2位相异或
  tmGray := tmGray + IntToStr(m);
  tm := MidStr(tm, 3, Length(Gray) - 2);
  for I := 1 to Length(Gray) - 2 do
  begin
    m1 := m;
    m2 := StrToInt(MidStr(tm, 1, 1));   //次高位相异或
    m := m1 xor m2;                     //第二次把第1次异域结果与格雷码的左3位相异或  余下以此类推
    tmGray := tmGray + IntToStr(m);
    tm := MidStr(tm, 2, Length(tm) - 1);
  end;
  Result := tmGray;
end;
  评论这张
 
阅读(288)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017