• ベストアンサー

ビット演算について

プログラムを実行した結果が、 10101010 × 11001100 = 10011001 (=の右辺は、演算方法として×の左辺と右辺のNOT XOR、演算処理は1行で行う。) と表示できるプログラムを作成したいのですがよくわかりません。 どなたか教えていただけないでしょうか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

xorして反転すればいいんですよね char value1 = 0xAA; //10101010 char value2 = 0xCC; //11001100 char value3; value3 = ~(value1 ^ value2);

kaiji12345
質問者

お礼

なるほど。ありがとうございます。 『~』…NOT、『^』…XORを利用すればいいんですね。 1行というのに悩まされましたが解決できました。 ビット演算子のとこがあまりわからなくて。。。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • NOT演算

    ~=NOT演算 Javaプログラムで 44をNOT演算で実行すると-45 という結果が得られますが、なぜそのようになるのかがわかりませんので教えてください。

  • C#の??演算子に変わるものは?

    お世話になっております。 Visual Studio 2005にて開発していますが VBにおいてC#の??演算子に変わるものがあれば教えていただけませんか? ちなみに??演算子は newClass = class1 ?? defaultClass みたいな使い方で、左辺がNULLの時に右辺を適応します。 VBでは・・・ newClass = IIF( class1 Is Not Nothing , class1 , defaultClass ) みたいな書き方になるのでしょうか? 演算子がないものかなぁ・・と。 MSDNのVBの演算子を見てみましたが、それらしきものが発見できませんでした・・・

  • ビット演算について

    以下のプログラムを作成して、int型、char型、long型のAND演算・OR演算の結果の違いを見ました。 実行結果からchar型だけ結果の表示の仕方が他と異なっています。 一般的に、バイト数では、 char(1バイト) < short(2バイト) < int(4バイト) のはずなのに、出力結果は、 char(0xffffffff) > short(0xff) = int(0xff) となっていて、charが一番大きく?、shortとintが同じ結果? のようにみえてしまいよくわかりません。 私は、ビット演算が苦手なので、根本的に考え方が間違っているのかも しれませんが、どうしてこのような出力結果となるのか教えてください。 プログラム #include <stdio.h> #include <stdlib.h> int main() { int xi = 0x7F, yi=0x80; int stri1 = xi&yi; int stri2 = xi|yi; printf("** int **\n"); printf("%p\n",stri1); printf("%p\n\n",stri2); char xc = 0x7F, yc=0x80; char strc1 = xc&yc; char strc2 = xc|yc; printf("** char **\n"); printf("%p\n",strc1); printf("%p\n\n",strc2); short xl = 0x7F, yl=0x80; short strl1 = xl&yl; short strl2 = xl|yl; printf("** short **\n"); printf("%p\n",strl1); printf("%p\n\n",strl2); return(0); } 出力結果 ** int ** 0x0 0xff ** char ** 0x0 0xffffffff ** short ** 0x0 0xff

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

    質問があるのですがよろしくお願いします。 環境は 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
  • 論理演算子について

    論理演算子には Not And Or Xor Eqv Imp があるようですがNot・And・Orしか理解できませんでした。 Excel VBA ベーシックを受ける際は、上記しか理解してないままでも大丈夫ですか? しっかり勉強してすべて覚えるべきでしょうか?

  • FlashLite1.1でXOR演算について

    FlashLite1.1でXOR演算を使いたいのですが、 「^」はFlashLite2.0からの実装みたいなので困っています。 自前で同じ処理を行うことは可能でしょうか。 処理速度はそれほど気にしていません。 それとも諦めて素直にFlashLite2.0で書いた方がいいでしょうか。 宜しくお願い致します。

  • 論理演算、ビット演算

    C言語仕様上、真/偽は(Not0/0)であることは理解しています。また、処理順序から、論理演算とビット演算では評価対象の範囲が違うことも知っているつもりです。 その上で質問させていただきます。 お手数ですが、お解りになる方は教えていただけると助かります。 例えば、 i=0,j=0である場合 ( (i == 0) && (j == 0) )は真であると思いますが、 ( (i == 0) & (j == 0) )は規定されているでしょうか。 また、( (i == 0) | (j == 0) )は真となることが(理論上)保証されているように思えますが、問題ないでしょうか。 以上、よろしくお願いいたします。

  • 集合演算

    (A∩B∩C)∪(A∩B∩Cc)∪(A∩Bc∩C)= A∩(B∪C) これを示すのにはどうすればいいのでしょうか? 左辺から地道に計算していったのですがよくわかりません。 もしかしたら 左辺=○○ 右辺=○○ で結果から左辺=右辺を示せばいいのでしょうか? それともしよかったら途中で使った対称律とか補元律などの性質を示してくださるとありがたいです。 それからこの程度の問題(ブール代数)があるURLとか載せてくれませんか?

  • 下記の動作をなるべく少ない論理演算でやりたい

    入力(0か1)はabcdefthの8つで、1の場所を右にソートして入力と同じ形で出力したいんです 論理演算はNOT、AND、OR、XORしか使えず新しい変数は1bitのみしか使えません abcdefth 00000000 → 00000000 00000010 → 00000001 00001010 → 00000011 01100111 → 00011111 11111110 → 01111111 できれば40回未満程度でやりたいのですが、うまい方法は無いでしょうか?

  • チェックボックスをビット演算子で処理したい

    チェックボックスをビット演算子で処理したいのですが、DBに格納した数値をビット演算子で処理する方法がわかりません。 たとえば、北海道から沖縄までのチェックボックスを作成してそれぞれに 1,2,4,8,16,32・・・とvalueを持たせます。 DBには数値の和を入れておきます。 その値を分解してチェックボックスをcheckedにしたいです。 ちょっとわからなくなってしまって。 教えてください、。よろしくお願いします。

    • ベストアンサー
    • PHP