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

Red Hat Linux 9を使用して、C言語のプログラミングをしているのですが、分からないことがありますので質問させて頂きます。

1010101010101010101010101010101010101010101010101010101010101010

上記のような64ビットの値があり、このうち奇数ビットだけと偶数ビットだけを取り出したいと思います。それぞれ32ビットの値になります。

11111111111111111111111111111111
00000000000000000000000000000000

いろいろ考えてみたのですが、アイディアが思い浮かばず困っております。どなたか分かる方アドバイスをよろしくお願い致します。

A 回答 (1件)

効率は悪いと思いますが、シフト演算子を用いて強引に考えてみました。


long型のxに値が入っているものとすると、次のような形を利用することで奇数ビットだけ、もしくは偶数ビットだけを取り出せると思います。

long x = 123456;
for(int i = 63; i >= 0; i=i-2){
if((x >> i) & 1){
//適当な処理
}else{
//適当な処理
}
}
    • good
    • 0
この回答へのお礼

シフト演算を利用することで解くことができました。どうもアドバイスありがとうございました。

お礼日時:2004/01/22 23:45

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