そこで、7 ビットのグレイ コードを対応する 7 ビットのバイナリ コードに変換する関数を作成しようとしています。
変換方法は次のとおりです-
- グレー値ビット ---- MS ビット > (G6) G5 G4 G3 G2 G1 G0 *
バイナリ値ビット -- MS ビット > (B6) B5 B4 B3 B2 B1 B0 *
B6 = G6 // MS ビットは常に同じ
- B5 = B6 ^ G5 // ビットを排他的「OR」して、7 ビットのバイナリ値を構築します
- B4 = B5 ^ G4
- B3 = B4 ^ G3
- B2 = B3 ^ G2
- B1 = B2 ^ G1
- B0 = B1 ^ G0
これまでの私の機能は次のとおりです-
unsigned short Gray_to_Bin(unsigned short Gray)
{
unsigned short Bin;
unsigned short i;
unsigned short mask;
mask = 0x40; // Initial mask
Bin = 0;
Gray &= 0x7f; // Mask bit 7 (Index Bit)
Bin = Gray & mask; // Set B6 = G6
for (i=0; i<6; i++) // Set B5, B4, ..., B0
{
// Code needed here!!
}
return Bin;
}
ループの実行ごとに必要な特定のビットにアクセスする方法を見つける必要があります...どうにかして配列でできるようにビットにアクセスする必要があります...
アイデア/ポインタはありますか?ありがとう :)