私はこの1010XXXXのようなバイトを持っていますが、X値は何でもかまいません。下位4ビットを特定のパターン、たとえば1100に設定し、上位4ビットは影響を受けないままにします。これをCで最も速くするにはどうすればいいですか?残りの部分に影響を与えずに、Cのあるビットの特定のビットだけをどのように設定しますか?
13
A
答えて
11
4ビットを0に設定し、その他すべてを1に設定してビット単位でビットを0に設定できます(これは4ビットの1の補数です)。ビット単位で、またはビット単位で通常どおりに行うことができます。一般的に
val &= ~0xf; // Clear lower 4 bits. Note: ~0xf == 0xfffffff0
val |= lower4Bits & 0xf; // Worth anding with the 4 bits set to 1 to make sure no
// other bits are set.
33
すなわち
:
value = (value & ~mask) | (newvalue & mask);
mask
は1に設定変更するすべてのビットを持つ値(およびそれらだけ)である - それはあなたのケースで0xFのことでしょう。 newvalue
は、これらのビットの新しい状態を含む値です。他のすべてのビットは基本的に無視されます。
これは、ビット演算子がサポートされているすべてのタイプで機能します。
0
ビット演算子または|を使用してください。あなたは0から1までのバイトのビットを変更したいとき
使用ビット単位の演算子と&あなたは1から0までのバイトのビットを変更したいとき
例
#include <stdio.h>
int byte;
int chb;
int main() {
// Change bit 2 of byte from 0 to 1
byte = 0b10101010;
chb = 0b00000100; //0 to 1 changer byte
printf("%d\n",byte); // display current status of byte
byte = byte | chb; // perform 0 to 1 single bit changing operation
printf("%d\n",byte);
// Change bit 2 of byte back from 1 to 0
chb = 0b11111011; //1 to 0 changer byte
byte = byte & chb; // perform 1 to 0 single bit changing operation
printf("%d\n",byte);
}
多分もっと良い方法があるかもしれない、私は知らない。これは今のところあなたを助けるでしょう。
関連する問題
- 1. 他のカーソル設定コードに影響を与えずに特定のコンポーネント上でマウスカーソルを変更
- 2. ページテーブルエントリの参照ビットと変更ビットは、ページングにどのように影響しますか?
- 3. C#とExcelで別の行のrowHeightに影響を与えずに行のrowHeightを設定する方法
- 4. uint16_tを他のビットに影響を与えずにuint16_tに挿入する方法
- 5. どのように否定!my_function()はCで私の関数に影響を与えますか?
- 6. このコードをランタイムに影響を与えずに分解できますか?
- 7. noNamespaceSchemaLocation属性はXML解析にどのような影響を与えますか?定義により
- 8. 私のCSSは特定の部分のHTMLコードに影響しませんか?
- 9. Cビット設定(ビット操作)
- 10. Web設定がホストアプリケーションに与える影響を変更する
- 11. ビット操作演算子の優先順位が出力に与える影響
- 12. イメージを他の2つのブロックに影響を与えずにどのように整列できますか?
- 13. オーバーフローはどのような影響を与えますか?このコードには隠しがありますか?
- 14. テーブルの列を削除し、残りの部分をExcelに以前のテーブルに影響を与えずに左にシフトする方法
- 15. ListViewDataItem設定プロパティのラベルはすべてのラベルに影響を与えます
- 16. 16ビットを8ビットの2つの部分に分割する
- 17. 角度で、どのようにルーティングに影響を与えずにURLに状態を保存しますか?
- 18. Rustの1ビットをどのように設定、クリア、トグルしますか?
- 19. 他のロガーに影響を与えずに、cetainクラス/パッケージ上のappenderのロギングしきい値を設定するにはどうすればよいですか?
- 20. CSS特定の文字の前にあるすべてのテキストに影響を与えます
- 21. Java:特定のビットがlongに設定されているかどうかを確認してください
- 22. 保留中のプル要求が特定のファイルにどのような影響を与えるかを確認する方法はありますか?
- 23. 特定のビットを設定するには? - 16進数で?
- 24. アンシCのビット設定
- 25. mavenのwsdlDirectory設定に影響がありますか?
- 26. カスタムユーザーの設定がアプリケーションのフォントサイズに影響を与えないようにするには
- 27. イメージの特定の部分にホバーの影響を追加する
- 28. mail.domainname.comに影響を与えずにwww.domainname.comのためのAzure DNSゾーンを設定する方法
- 29. どのようにしてandroid:targetSdkVersionがrequestPermissionsに影響を与えるか
- 30. デバッガはiPhoneのパフォーマンスにどのような影響を与えますか?
具体的な例を挙げてください。私が持っていると仮定します:n = 1024です。ビットを位置3から7まで(0を含む0から最下位ビットまで)からk = 19に変更したいと思います。結果は:1176になるはずです。ありがとうございました。 – dh16