近期做的项目涉及到格雷码转换,正好DFW里没有,将网上找到的贴上来(1分)

  • 主题发起人 shibaoping
  • 开始时间
S

shibaoping

Unregistered / Unconfirmed
GUEST, unregistred user!
//格雷码转换为二进制
// Konvertierung von Gray-Code in Binär-Code
// Input: i1 - Gray-Code
// i2 - Anzahl der Bits (maximal 32)
// Result: Binär-Code
Function GrayToBin(i1,i2:Integer):Integer;
Var i,k1,k2,k3,k4:Integer;
begin

// Bitmaske erzeugen
k1 := 1;
For i := 1 to i2-1do
k1 := k1 * 2;
// Ergebnis
k2 := i1 and k1;
// Bitweise XOR Verknüpfung durchführen
k3 := i1;
For i := 1 to i2-1do
begin

k3 := (k3 and k1) div 2;
k1 := k1 div 2;
k4 := i1 and k1;
k3 := (k3 xor k4) and k1;
k2 := k2 or k3;
end;

Result := k2;
end;

//二进制转化为格雷码
// Konvertierung von Binär-Code in Gray-Code
// Input: i1 - Binär-Code
// i2 - Anzahl der Bits (maximal 32)
// Result: Gray-Code
Function BinToGray(i1,i2:Integer):Integer;
Var i,k1,k2,k3,k4:Integer;
begin

// Bitmaske erzeugen
k1 := 1;
For i := 1 to i2-1do
k1 := k1 * 2;
// Ergebnis
k2 := i1 and k1;
// Bitweise XOR Verknüpfung durchführen
For i := 1 to i2-1do
begin

k3 := (i1 and k1) div 2;
k1 := k1 div 2;
k4 := i1 and k1;
k2 := k2 or (k3 xor k4);
end;

Result := k2;
end;
 
顶部