論理演算子and
とor
とビットごとのアナログの相違点&
,を使用していますか?さまざまなソリューションの効率に違いはありますか?論理とビットの比較
4
A
答えて
7
論理演算子は論理値で動作し、ビット演算子は整数ビットで動作します。パフォーマンスについて考えるのをやめ、それが意味するところで使用してください。
if x and y: # logical operation
...
z = z & 0xFF # bitwise operation
-2
論理演算子はこれらです:
& |^~
彼らが許可:
(true || false) // evaluates to true
(!true) // evaluates to false
ビット演算子はこれらです:彼らはあなたが例えば論理値を操作できるよう
&& || == !
あなたはbiで操作するこのような進ビット、:true
あなたは1と0以外の(バイナリ)番号を使用している場合は1とfalse
が0に等しい等しいので、
~011 = 100
0101 & 0011 = 0001
1
論理演算子は、ブール値のために使用され、ゼロではありません、その後、任意の数になります1。
例:int x = 5;
(バイナリで101)int y = 0;
(2進数で0)この場合、x && y
は0
を出力します.101は1に変更され、0は0に保たれました。これはtrue && false
と同じで、false
(0)となる。
一方、ビット単位の演算子は、2つのオペランドのすべての単一ビットに対して演算を実行します(したがって、ビット単位の演算)。
例:int x = 5; int y = 8;
印刷x | y
(ビット単位OR)これを計算するであろう:0101
(5)| 1000
(8)
----------- = 1011
(11)
が11
を印刷するであろう意味。
関連する問題
- 1. ビューの論理比較
- 2. C++:条件文との論理比較?
- 3. Julia:配列との論理比較
- 4. Fortran論理的比較
- 5. if文、論理AND、比較
- 6. 比較ソート - 理論的
- 7. 日時の論理を比較する
- 8. カードの論理を比較する
- 9. YIIでの論理比較findAll()
- 10. 論理ORとビットOR
- 11. Python:pandaのデータフレームの列との論理比較
- 12. Javaの論理演算子との文字列比較
- 13. SASマクロ変数科学記法との論理比較
- 14. 誘導的論理プログラミングと回答セットプログラミングの比較
- 15. C比較ビットを比較するときのソートセグメンテーションフォルト
- 16. c、ビット単位、論理式
- 17. if文の1行で複数の論理比較
- 18. PHPの論理演算子の比較評価
- 19. Rubyの論理文字列の比較(例: "a"> "b")
- 20. Pygameのインストール - 32ビットと64ビットの比較
- 21. C++の8ビット整数と32ビット整数のビット単位の論理和
- 22. 初級Javaブール論理入力値を比較する
- 23. 合金 - 一次論理で比較する
- 24. 英語以外の環境でのData.table、論理比較とエンコーディングのバグ/エラー
- 25. 64ビット整数のすべてのビットと32ビット整数を比較する
- 26. 項目を論理的に比較できないときのコンパレータのベストプラクティス
- 27. 論理演算子の実行時間とブール演算の比較
- 28. javascriptの文字列比較の基礎となる論理は何ですか?
- 29. マイクロコントローラでのビット単位の論理
- 30. バイトのJavaビット単位の比較
パフォーマンス上の問題:通常、これらの低レベル操作の違いは、プログラムの全体的なパフォーマンスに10 ** 6回以上のオーダーの影響を与えます。あなたが(OP!)何度もその操作を実行する必要がある場合は、numpy/scipyのような数値/科学ライブラリに切り替えなければならない可能性があります。 – mac
パフォーマンス上の問題。 'and'と' or'は左から右に作用する "短絡"演算子なので、 'aと(何かひどく高価な)'が 'a&(something 'a'がFalseのとき)。短絡の評価は、まったく無視できる効果ではありません。それは深遠です。 –