問題タブ [binary-operators]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 単項と二項の両方であるcに演算子はありますか?
単項と二項の両方である c の演算子はありますか? この質問はあるインタビューで聞かれました。
java - Java で Integer.toBinaryString() を使用する場合のパディングの処理
この問題http://www.geeksforgeeks.org/find-two-non-repeating-elements-in-an-array-of-repeating-elements/に Method2 を実装したいのですが、問題が 1 つあります。配列の数値を2つのグループ(バイナリ表現の指定された位置に「1」があるグループとないグループ)に分割する方法がわかりません。配列内のInteger.toBinaryString()
各数値に使用する必要があると思いました次の方法:
しかし、問題は、バイナリ表現ですべての数値が同じ長さであるとは限らず、メソッドが正しく機能しないことです。どうすればこれを処理できますか? つまり、パディングをどのように処理できますか?
c++ - C++ デジタル ロジックのシミュレーション、フレンド バイナリ演算子の実装
序章
デジタルロジックをシミュレートする実験に取り組んでいます。(論理ゲート。)
component
クラスがandgate
継承する抽象基本クラスがあります。クラスport
も から継承しcomponent
ます。クラスport
にはメンバーがあります。PORTSTATE state
.
PORTSTATE
HIGH
、LOW
、HIGH_IMPEDANCE
、などの値を持つ列挙型クラスですUNDEFINED
(これは単なる背景情報です)。
シミュレーションは、入力ポートの状態を論理ゲートに変更することによって機能します。ゲートは (ポインターを使用して) クラスNet
に接続され、そのクラスはそのネットワーク上のすべての接続されたロジックへのポインターを持ちます。これにより、状態が変更されたゲートの下流にあるすべてのゲートを必要に応じて変更できます。入力の変化によって変化する論理ゲートの状態を考えてみましょう。その出力が接続されているネットワークを使用すると、シーケンスのさらに下にあるゲートをそれに応じて更新できます。
私の質問は、フレンド関数とoperator&
.
問題の例
1 つの出力ポートと 2 つの入力ポートを持つ And ゲートを考えてみましょう。ポートはゲートを表すクラスのメンバーであり、方向や状態などの情報が関連付けられています。
入力からゲートの出力を計算する関数が呼び出されます。この関数は、gate クラスのメンバー関数です。たとえば、And ゲートには、この関数のバージョンがあります。
最初に、次の方法で関数を実装しました。
重要なのoperator&
は、 が 2 つの入力ゲートの引数で呼び出されることです。input_port_a
そしてinput_port_b
引数として。
次に、ポート クラスで、この演算子を実装しました。
しかし、これには深刻な問題があります。2 つのポートを一緒に「AND」することはできません。ポートは抽象的な概念であり、どの入力または出力にどのような電流が流れているか (または同等にどのような電圧が印加されているか) を追跡する方法です。より物理的な解釈は、ポートが短い長さのワイヤであり、電流が流れているというものです。電流は「HIGH」または「LOW」ですが、これら 2 つのオブジェクトを「AND」する方法はありません。ほとんどのエンジニアや物理学者は、おそらくこの点のために、このコードを恐ろしく見るだろうと思います。
したがって、「明らかな」修正はoperator&
、 And ゲートの内側をフレンドリーな関数として配置することです。
ただし、目を覚ましている人は、これも悪い考えであることに気付くでしょう*。なぜなら&
、And ゲートの 2 つのインスタンスのみが一緒に可能であり、これは確かに意味がなく、正しい結果を計算しません! (理にかなった結果を計算することさえできるでしょうか? 可能性は低いです。)
*(完全に間違っています)
検討;
そうです、これが問題であり、解決策が思いつきません。ある意味では概念的ではありますが、最初のアプローチを使用して 2 つのワイヤのビットを一緒に「AND」できるという考えには、深刻な欠陥があるように思えます。
可能 - しかし、あまり可能ではない - 「解決策」
私が考えることができる唯一のことは、演算子を完全に省き、And ゲートのUpdate()
関数内ですべてを手動でプログラムすることです...しかし、この種のことは、C++ の優れた点、つまり、そのようなもののための演算子を作成できることを回避します。
そのようなものがなくPORTSTATE
、代わりbool
に使用された場合は、2 つのブール型を単純に組み合わせることができるため、問題はないことに注意してください&
。ただし、これはこのUpdate()
ようなものに変更され、これもあまり良くありません。(メモ メンバー アクセスはパブリックです。)
間違いなく、データを保護する方が良いでしょう: (しかし、関数呼び出しのせいで「見た目」が悪くなるのではないでしょうか?)
これにより、既存の状態が 2 つしかないという問題も発生します。未定義状態やハイインピーダンス状態などを扱えるものはありません。
だから私は立ち往生していて、アイデアがありません。
c++ - C++ の右シフトが異常な結果をもたらす (符号なし 64 ビット)
私はビットシフトの恐ろしい世界にいます。次のコードがあります。
この番号をシフトしています: 140638023551944 >> 5.
http://www.binaryhexconverter.com/decimal-to-binary-converterによると、140638023551944 のバイナリ表現は次のとおりです。
1000011000011111011101000111
右シフト 5、私は期待: 0000010000110000111110111010
しかし、代わりに、11111111110100011010111011011110001011110 である 4394938235998 を取得します。
私には、その数は元の数とはほとんど関係がないように見えます。一方に存在するパターンが他方に存在することはありません。とても奇妙です。
コードは次の行に沿っています。
「アドレス」には正しい整数 140638023551944 が入力されています。これは確認済みです。
この奇妙な行動は何ですか?このシミュレータと一致しています: http://www.miniwebtool.com/bitwise-calculator/bit-shift/?data_type=10&number=140638023551944&place=5&operator=Shift+Right ! しかし、右シフトがそのように機能するはずがないことは確かです!
c - c のバイナリ文字列に対する OR 演算により、出力の半分が間違っている
エラーの内容はわかりませんがor
、文字列の各文字で操作が成功しません。
python - Numpy の構造化配列の二項演算子はありませんか?
さて、numpy の構造化配列に関するチュートリアルを行った後、いくつかの簡単な例を作成できます。
(私の意図した使用例では、3 つ以上のエントリがあり、非常に長い 1 次元配列が使用されます。) したがって、基本的な計算を実行しようとするまでは、すべてうまくいきます。次のすべてでエラーが発生します。
どうやら、単純な演算子 (+、-、、/) は、最も単純な構造化配列でもサポートされていません。または、何か不足していますか?他のパッケージを検討する必要がありますか (パンダとは言わないでください。これは完全にやり過ぎです)。これは当然の能力のように思えるので、少し唖然とします。しかし、ネット上でこれについてのおしゃべりを見つけるのは難しい. これは構造化配列の有用性を著しく制限していませんか? 辞書にパックされた配列ではなく、構造配列を使用するのはなぜですか? これが扱いにくいかもしれない技術的な理由はありますか? あるいは、オーバーロードという骨の折れる作業を実行することが正しい解決策である場合、操作を高速に保ちながらそれをどのように行うのでしょうか?
c# - C# コンパイラがこの != 比較を > 比較のように変換するのはなぜですか?
私は偶然にも、C# コンパイラがこのメソッドを有効にしていることを発見しました。
…このCILに:
…または、逆コンパイルされた C# コードを見たい場合:
が!=
" " と翻訳されるのは>
なぜですか?