私はよく、cで次のようなことができたらいいのにと思っています:
val1 &= 0b00001111; //clear high nibble
val2 |= 0b01000000; //set bit 7
val3 &= ~0b00010000; //clear bit 5
この構文を持つことは、私が考えることができるマイナス面のない C への非常に便利な追加のように思えます。また、ビット操作がかなり一般的な低レベル言語にとっては当然のことのように思えます。
編集:他にも優れた代替手段がいくつかありますが、より複雑なマスクがあると、それらはすべて崩壊します。たとえばreg
、マイクロコントローラの I/O ピンを制御するレジスタで、ピン 2、3、および 7 を同時に高く設定したい場合、書き込みはできますreg = 0x46;
が、それについて考えるのに 10 秒を費やさなければなりませんでした (そして、 1日か2日見ないでいると、コードを読むたびにもう一度10秒を費やさなければならないでしょう)または書くこともできますreg = (1 << 1) | (1 << 2) | (1 << 6);
が、個人的には、「reg = 0b01000110;」と書くよりもはるかに明確ではないと思います。ただし、8ビットまたは16ビットアーキテクチャを超えて拡張できないことに同意できます。32 ビット マスクを作成する必要があったわけではありません。