- 締切済み
ビット演算について
すみません、どうしても分からないのでご教授下さい。 ビット計算についてなのですが、 0x0585を2進数にして、0000 0101 1000 0101 となりますが、 これを6bitと10bitにわけて000001,0110000101とし、 これをまた16進数にしたいのですが、計算の仕方が分かりません。 ご教授お願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- lesskey
- ベストアンサー率33% (66/200)
質問の意味が「?」ですが・・・ てか解釈出来ない自分に問題あるのか(^-^;) 2バイト整数→ビット分解→再生成 の意味の分からない ソースを書いてみますた。 void calc(void){ short nVal = 0x0585; short nMake; short n6bit, n10bit; //下位10ビット取得 n10bit = nVal & 0x3FF; //上位6ビット取得 n6bit = (nVal >> 10) & 0x3F; //下位10ビット、上位6ビットで元の値に戻す nMake = (n6bit << 10) + n10bit; //比較する。元の数と同じ場合 ok と出力 if(nMake == nVal){ printf("ok"); } } ---- 単に2進→16進計算ならANo.2さんが言ってるよーに 4ビット毎に分けて計算すれば良いかと・・・
- fumufumu_2006
- ベストアンサー率66% (163/245)
ちゃんと質問で >0x0585を2進数にして、0000 0101 1000 0101 と4ビット毎に分けてるんだから、 000001,0110000101 を 00 0001 , 01 1000 0101 と4ビット毎にすれば、 00->0 0001->1 01->1 1000->8 0101->5 だから、 000001,0110000101 -> 00 0001,01 1000 0101 -> 0x01,0x185 ->0x0001,0x0185 になるんでは・・・
お礼
質問の内容があいまいなのにご回答いただきありがとうございました。 自分自身の理解不足のため、もう少し勉強してみてどうしても理解できない時は再度質問させて頂きます。 申し訳ありませんでした。
- a-saitoh
- ベストアンサー率30% (524/1722)
「6bitと10bitにわけてからまた16進数にする」というのがどのような操作を指すのかまったく不明確なので、回答できません。
補足
質問の内容があいまいですみませんでした。 もう少し自分で理解してから再度質問させて頂きます。 失礼しました。
お礼
質問の内容があいまいなのにご回答いただきありがとうございました。 自分自身の理解不足のため、もう少し勉強してみてどうしても理解できない時は再度質問させて頂きます。 申し訳ありませんでした。