- ベストアンサー
ビット演算子について
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
補数を使う場面は幾つかあるのですが、例えば、あるビットだけを OFF したい (ビットのリセット)ときに使います。 mask = 8; data = data & ~mask; とやると、4ビット目だけ OFF になり、他のビットは元の状態のままです。 >> と >>> の違いは、符号ビットの扱いです。一番左のビットは符号ビット といって、その数値が正か負かを表します。 >>> は、単純にビットをずらすので、一番左のビットは、必ず OFF になります。 >> は、正負の情報を保ちつつビットをずらすので、もし、シフト前に ON で あれば、シフト後にも一番左のビットは ON のままです。
関連するQ&A
- ビット演算子
掲題の件ですが、 ネットを調べていて他の言語のビット演算子は見つけることができたのですが、Visual Basicでのビット演算子が見つかりませんでした。 ビットシフトだと A >> 2 A << 2 などとかかれていたのですが、これは使えるのでしょうか? よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- ビット演算で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を沢山 つける目的は何なのでしょうか!? よろしくお願いします。
- ベストアンサー
- C・C++・C#
- Excelでビット演算子?
Excelでビット演算子の 左シフト演算をさせることは でるでしょうか? 0xff<<8 の演算をさせたいのですが 何か関数はあるでしょうか?
- ベストアンサー
- Windows XP
- ビット演算を学びたい
a &= 2; a |= 2; a ^= 2; a ~= 2; a <<=2; a >>=2; みたいな感じでビット演算が使われているソースを 良く見るのですが、いまいちビット演算で何をしているのかが 分かりません。 参考書などには文字通りビットをいじるような旨のことが書いてあります。 (こちらにも同じようなことが http://www9.plala.or.jp/sgwr-t/c/sec14.html) こういうので何となくは分かるのですが、 実際にこれを何に使えるか、実践ではどのように使うのかが なかなか見えてきません。 このビット演算を私のような者でも実際のプログラムで使いこなせるように なれるようなサイトや書籍の提示、あるいはサンプルのプログラムなどで ご指導いただけたらと思います。
- ベストアンサー
- C・C++・C#
- シフト演算子について・・・意味がわかりません(T_T)
左シフト演算子<<は最上位ビットの上位を削除して最下位に0を追加、 右シフト演算子>>は最下位ビットが削除されて、最上位ビットに最上位ビットと同じ値が補充される、 論理右シフト>>>は最下位ビット削除され、最上位に0が補充される。 と、ここまではわかりました・・・ ある問題で int n = -1>> 31; でnはいくつになるか?というのがあったんですが、 解説の意味がわかりません。 回答はー1です。 「>>演算子によるシフトでは符号ビットが拡張される」 意味がわかりません・・・(@_@) 「>>>演算子であったなら、符号ビットがゼロになるのでN=1となる」 え・・・???!!! ふごーびっと??? シフト演算子ですから、 「-1の31こ右にビットをシフトする」 んだな・・・と思ったところ、 まったくどう考えてよいのかわからず、 回答を見たところ、余計わからなくなりました。 だれかたすけてください(T_T)
- ベストアンサー
- Java
- ビット演算子~について。
質問があるのですがよろしくお願いします。 環境は 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
- 8ビットを2進数で表現すると…
質問です。 符号付の整数を8ビットの2進数で表現するとき、00110111-11000001の演算結果はどのようになるのでしょうか? 符号ビットは左端にあり、負数は2の補数で表します。
- 締切済み
- その他([技術者向] コンピューター)
お礼
a-kuma様ありがとうございました。 ビット演算子について、少し理解できたように思えます。