アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっております。
今回はビットの取り出しについてお聞きしたいです。

たとえばDWORD型の変数があったとして、この変数の5ビット目は0か1かと
いうことを知る簡潔な方法はありますか?
セットするときはシフト演算を使えばできますが、
あらかじめセットされたものの指定ビット目を得る方法が知りたいです。

bit = dw % 2 という計算でできると思ったのですが、最上位ビットが
何ビット目か判断する方法がよくわからなかったので
ご教授願います。

A 回答 (4件)

>>> たとえばDWORD型の変数があったとして、この変数の5ビット目は0か1かと


いうことを知る簡潔な方法はありますか?

5ビット目のみが1、その他のビットはすべて0の定数を準備し、それとのAND演算により得られた結果が
整数として0のときは、0
そうでないときは、1
と判断します。
    • good
    • 0

ああ, 最上位ビットを調べるならおそらく


x & ~(~(DWORD)0 >> 1)
でいいと思う.
    • good
    • 0

No1の方の回答をサンプルにしてみました。


>5ビット目のみが1、その他のビットはすべて0の定数を準備し、それとのAND演算により得られた結果が
整数として0のときは、0
というのはこういうことです。

int a; /* 判定対象の数*/
int b = 16; /* 5ビット目が1な数は16*/

if( a & b ){
/* a の5ビット目は1 */
}else{
/* a の5ビット目は0 */
}
    • good
    • 1

(x >> k) & 1U


で「k ビット目」がとりだせるんじゃない?
ちなみに最下位ビットが「0ビット目」ね.
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!