[解決済み] C - すべての偶数ビットが1に設定されている場合、すべてを決定する。
2022-02-19 16:33:31
質問
偶数位ビット(左から数えて)がすべて1に設定されているかどうかを判断する。例えば
0101 0101
はカウントされるのに対し
1011 1000
はカウントされません。
ビットの偶数個所に1があれば1を返し、そうでなければ0を返します。
制約事項:ビット演算子のみを使用しなければならない。条件付き演算子は使えない。式で使用できる最大の整数は次のとおりです。
0xFF
.
以下は私のコードです。
int allEvenBits(int X) {
int x1 = !((X & 0x55) ^ 0x55);
int x2 = !(((X >> 8) & 0x55) ^ 0x55);
int x3 = !(((X >> 16) & 0x55) ^ 0x55);
int x4 = !(((X >> 24) & 0x55) ^ 0x55);
return x1 + x2 + x3 + x4;
}
上記は、以下のように1を返します。
1011 0010 1001 0010 1011 1001 1111 1111
これを制約条件付きで動作させるには、どのように修正すればよいのでしょうか?
どのように解決するのですか?
と仮定すると
>>
はビット演算子としてカウントされるので、以下は16までの定数で済みます。
int allEven(unsigned x) {
x &= x >> 16;
x &= x >> 8;
x &= x >> 4;
x &= x >> 2;
return x&1;
}
関連
-
[解決済み】単項演算子「*」の型が無効(「int」がある)C言語でのエラー
-
[解決済み] (.text+0x20): `main'への未定義の参照と関数への未定義の参照
-
[解決済み】C言語におけるファイルスコープでの可変長配列の変更
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み] エラー: `itoa` はこのスコープで宣言されていません。
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] 32ビット整数のセットビットの数を数えるには?
-
[解決済み】ビットシフト(bit-shift)演算子とは、どのようなもので、どのように機能するのですか?
-
[解決済み】1回の乗算でビットを抽出する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】式は、単純なポインタ演算を使用して完全なオブジェクト型へのポインタでなければなりません【重複】。
-
[解決済み] clang: error: linker command failed with exit code 1が表示されるのはなぜですか?
-
[解決済み】警告。この関数ではXが初期化されていない状態で使用される可能性があります。
-
[解決済み】スレッド1:EXC_BAD_ACCESS(コード=1、アドレス=0x0)標準Cメモリ問題
-
[解決済み] テスト
-
[解決済み】fgetsによるセグメンテーションフォールト(コアダンプ) - と思う。
-
[解決済み】C言語でint64_t型を表示する方法
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み] エラー:整数が期待されるところで集約値が使用された
-
[解決済み】未定義参照 makefile が間違っているのかも?