私はこのプログラミング プロジェクトに取り組んでおり、その一部は、2 ビットごとに切り替わるビット演算子のみを使用して関数を作成することです。これを実現する櫛のようなアルゴリズムを思いつきましたが、符号なしの数値に対してのみ機能します。符号付きの数値でも機能させる方法はありますか? 私はこれに完全に困惑しています。私がこれまでに持っているものは次のとおりです。
// Mask 1 - For odd bits
int a1 = 0xAA; a1 <<= 24;
int a2 = 0xAA; a2 <<= 16;
int a3 = 0xAA; a3 <<= 8;
int a4 = 0xAA;
int mask1 = a1 | a2 | a3 | a4;
// Mask 2 - For even bits
int b1 = 0x55; b1 <<= 24;
int b2 = 0x55; b2 <<= 16;
int b3 = 0x55; b3 <<= 8;
int b4 = 0x55;
int mask2 = b1 | b2 | b3 | b4;
// Mask Results
int odd = x & mask1;
int even = x & mask2;
int newNum = (odd >> 1) | (even << 1);
return newNum;
変数を一緒に論理和することによってマスクを手動で作成するのは、使用できる唯一の定数が 0x00 ~ 0xFF の間であるためです。