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;
// 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;