• 締切済み

ビット演算について

fumufumu_2006の回答

回答No.2

ちゃんと質問で >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 になるんでは・・・

shinbergen
質問者

お礼

質問の内容があいまいなのにご回答いただきありがとうございました。 自分自身の理解不足のため、もう少し勉強してみてどうしても理解できない時は再度質問させて頂きます。 申し訳ありませんでした。

関連するQ&A

  • ビット演算子について

    あるプログラムの中で下記のようなif文の記述を見かけました。 どういう計算をしてif文の判定を行っているのでしょうか。 (1)256を2進数に変換して → 100000000 (2)0x00000004を2進数に変換して → 100 (3)100000000 & 100 のビットAND演算を行う そもそも(3)で100000000 と 100 では桁数が違うけどどうやって両者でビット演算するので しょうか。100を 000000100というように0を補完して計算すればよいのでしょうか。 その場合、100000000 & 000000100 → 000000000(2進数) → 0(10進数) となりif文の中には入らないことになると思います。 if(256 & 0x00000004 != 0)

  • ビット演算について

    いつもお世話になります。 ビット演算について教えて下さい。 unsigned char buf1[1]=0x5a unsigned char buf1[2]=0x04 unsigned char buf1[3]=0x38 5a0438(16)を3バイトの値を12ビットずつの整数で得るにはどうしたらいいのでしょうか? 2進数表記では、 5A | 04 | 38 01011010 | 00000100 | 00111000 12ビットずつとは、 010110100000 010000111000 と区分し、10進数の整数値で得たいです。どのようにすればよいでしょうか? また、0x5Aなどの16進数を2進数のビットで考えるときに、 01011010を下位4ビットを10進数整数を得るにはどうしたらよいのでしょうか? 上記2点、どうぞよろしくお願い致します。

  • ビット演算子について

    ビット演算子のことがよく分かりませんので、結果の求め方を教えてください。ちなみに16進数、2進数などは分かります。 〈例〉(1) 0xf0 & 0xaa     (2)~0x55

  • 2進数データのビット演算

    vb.netにて 0と1からなる2進数で記録した2つの値をビット演算したいと思っております。 Convert.ToInt32("1111101000", 2) などを使って、一度数値に変換して演算すれば、計算可能なことはわかったのですが、計算に利用したいデータが2進数で1000桁ほどあります。桁数が多い場合、Convert.ToInt32ではエラーが出て実行できません。 無数に長い2進数のデータをビット演算するにはどうすればよろしいでしょうか。 ご存知の方、ご教授よろしくお願いいたします。

  • ビット演算のやり方

    a=10101,b=11011,c=10001という文字があり まずこのa,b,cを一列に並べ d=101011101110001という文字列にした後に、これを5bit単位にわけ その中の下位4bitを使い並べるとした時どうしたらいいでしょうか? 5bit単位とは次のように分けます d=10101 11011 10001 それで分けた5bitごとに下位4bitを適用するとして、 dは0101  1011  0001となり 結果をe=010110110001とするにはどうしたらいいでしょうか?

  • ビット演算を使えば出来ますか?

    あるchar型の変数の各ビットを二つずつにして別の変数にしまいたい場合どういうプログラムを作ればいいでしょうか? char型の変数 data1 = 0x51があるとします。 2進数で表すと[01010001] になります。 これを別のchar型の変数に data2=[00110011], data3=[00000011]というふうにしてしまいたいのです。 なにぶん素人なものでうまく説明できませんが各ビットを二つにして横に伸ばすイメージです。 0→00 1→11 となります。 data1=0x33だと[00110011]ですから作りたいデータは data2=[00001111],data3=[00001111]です。 data1=0x12だと[00010010]ですから作りたいデータは data2=[00000011],data3=[00001100]です。 for文とビット演算をつかってdata1からdata2とdata3を作れそうな気はしますがよくわかりません。 説明が分かりにくくて申し訳ありませんが、どなたか教えていただけないでしょうか?

  • 2つの画像の演算について

    今、imageJを用いて2つの画像を掛けたものを求めようと思っています。 その際に疑問に思ったのですが、 8bitのものと32bitの画像を掛けると答えが変になります。 bit数が違うとうまく計算できないのでしょうか?? あまりに初歩的な質問のせいか、検索してもいい答えが見つかりません。 もしご存知の方がいらっしゃいましたら、ご教授をお願い致します。

  • ビット演算子

    & | ~ ^のビット演算子はどんな場面で使いますか? いまひとつ、ビット演算子が理解できません。 使いこなすには、二進数の表現、16進数の表現にも詳しくないとだめでしょうか? ビット演算子を使わなければならない場面、ビット演算子を使うメリットを教えてください。 お願いします。

  • ビット演算子~について。

    質問があるのですがよろしくお願いします。 環境は Windows Home Editon PHP 5.2.0 Apache 2.2.3 です。 PHPのビット演算子、「~」についてなのですが、 http://wisdom.sakura.ne.jp/programming/php/php8.html このページを見ると、~が式のビットを全て反転させる演算子であると書いてあるのですが、 echo ~5; を実行すると、なぜかブラウザに表示されるのは-6です。 10進数の5を2進数に変換すると0101で、それを~演算子を使って反転させると1010なので、ブラウザに表示される数字は10であるべきではないのでしょうか。返り値が-6という負数になってしまうのも何故だか分かりません。 詳しい方いらっしゃいましたら、ご教授頂けると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ビット演算で00000001と1の頭に0を付ける?

    https://www.grapecity.com/japan/powernews/column/clang/019/page02.htm ビット演算子 表1にCのビット演算子を掲げておきます。ビット演算とは言っても、扱う値はバイト単位などCの一般的な整数のデータ型です。ビット演算子は、それらの値をビット単位で計算します。 ビットシフト演算(<< >>)~2倍と1/2 例えばunsigned char型の1は、2進数では"00000001"という形のビット列(ビットパターン)になります。これを1桁左にずらす(シフトする)と"00000010"となります。ずらしてあふれた左端の0は消え、空いた右端には0が入ります。 "00000001"は10進数の「1」、"00000010"は10進数の「2」です。つまり、ビット列を左に1桁シフトすると値は2倍になるのです。 -----------------------------------------  以上ですが、C言語の、ビット演算の解説の抜粋です。ビット演算はまだ覚えたてですが、"00000001"整数1の頭にわざわざ、0を沢山 つける目的は何なのでしょうか!?  よろしくお願いします。