- ベストアンサー
ビット演算について
プログラムを実行した結果が、 10101010 × 11001100 = 10011001 (=の右辺は、演算方法として×の左辺と右辺のNOT XOR、演算処理は1行で行う。) と表示できるプログラムを作成したいのですがよくわかりません。 どなたか教えていただけないでしょうか?よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- C#の??演算子に変わるものは?
お世話になっております。 Visual Studio 2005にて開発していますが VBにおいてC#の??演算子に変わるものがあれば教えていただけませんか? ちなみに??演算子は newClass = class1 ?? defaultClass みたいな使い方で、左辺がNULLの時に右辺を適応します。 VBでは・・・ newClass = IIF( class1 Is Not Nothing , class1 , defaultClass ) みたいな書き方になるのでしょうか? 演算子がないものかなぁ・・と。 MSDNのVBの演算子を見てみましたが、それらしきものが発見できませんでした・・・
- ベストアンサー
- Visual Basic
- ビット演算について
以下のプログラムを作成して、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
- ベストアンサー
- C・C++・C#
- ビット演算子~について。
質問があるのですがよろしくお願いします。 環境は 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
- FlashLite1.1でXOR演算について
FlashLite1.1でXOR演算を使いたいのですが、 「^」はFlashLite2.0からの実装みたいなので困っています。 自前で同じ処理を行うことは可能でしょうか。 処理速度はそれほど気にしていません。 それとも諦めて素直にFlashLite2.0で書いた方がいいでしょうか。 宜しくお願い致します。
- 締切済み
- Flash
- 論理演算、ビット演算
C言語仕様上、真/偽は(Not0/0)であることは理解しています。また、処理順序から、論理演算とビット演算では評価対象の範囲が違うことも知っているつもりです。 その上で質問させていただきます。 お手数ですが、お解りになる方は教えていただけると助かります。 例えば、 i=0,j=0である場合 ( (i == 0) && (j == 0) )は真であると思いますが、 ( (i == 0) & (j == 0) )は規定されているでしょうか。 また、( (i == 0) | (j == 0) )は真となることが(理論上)保証されているように思えますが、問題ないでしょうか。 以上、よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- 下記の動作をなるべく少ない論理演算でやりたい
入力(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
お礼
なるほど。ありがとうございます。 『~』…NOT、『^』…XORを利用すればいいんですね。 1行というのに悩まされましたが解決できました。 ビット演算子のとこがあまりわからなくて。。。 ありがとうございます。