問題タブ [signed]
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.
mips - 32ビットレジスタを使用した倍精度整数減算(MIPS)
私はコンピューターの算数を学んでいます。私が使っている本(パターソンとヘネシー)には、以下の質問があります。
mipsコードを記述して、64ビットデータの倍精度整数減算を実行します。最初のオペランドがレジスタ$t4(hi)と$ t5(lo)にあり、2番目が$ t6(hi)と$ t7(lo)にあると仮定します。
答えに対する私の解決策は
ただし、この問題の解決策を示した作成者は次のとおりです。
符号付き倍精度整数の場合、
符号なし倍精度整数の場合、
sub/add
との動作の違いについての私の理解はsubu/addu
、オーバーフロー例外はで生成され、では生成されsub/add
ないということですsubu/addu
。オペランドのビットの減算/加算sub/add
とsubu/addu
、符号付きまたは符号なしのオペランドの解釈は、inslt
およびsltu
命令とは異なり、結果に違いはありません。
質問1
私は、オーバーフロー検出が処理されているという解決策を与えられた著者から推測していますが、私の解決策では同じことを考えていませんでした。私は正しいですか?他に足りないものはありますか?
質問2上記の推論が正しいと仮定すると、と
を使用して符号なし倍精度を減算する場合に、作成者が提供したソリューションのオーバーフロー検出がオフになっているのはなぜですか?addu
subu
c++ - C/C++ での符号付きオーバーフローの検出
一見すると、この質問は整数オーバーフローを検出する方法の重複のように思えるかもしれません。ですが、実際には大きく異なります。
符号なし整数のオーバーフローを検出することは非常に簡単ですが、C/C++ で符号付きオーバーフローを検出することは、実際にはほとんどの人が考えるよりも難しいことがわかりました。
それを行うための最も明白でありながら単純な方法は、次のようなものです。
これに関する問題は、C 標準によると、符号付き整数のオーバーフローが未定義の動作であることです。 言い換えれば、標準によれば、符号付きオーバーフローを引き起こすとすぐに、プログラムは null ポインターを逆参照した場合と同じように無効になります。したがって、未定義の動作を引き起こすことはできず、上記の事後条件チェックの例のように、事後にオーバーフローを検出しようとします。
上記のチェックは多くのコンパイラで機能する可能性がありますが、期待することはできません。実際、C 標準では符号付き整数のオーバーフローは未定義であると述べられているため、最適化フラグが設定されている場合、一部のコンパイラ (GCC など) は上記のチェックを最適化して除外します。これにより、オーバーフローをチェックする試みが完全に中断されます。
したがって、オーバーフローをチェックする別の方法は次のとおりです。
このような加算を実行してもオーバーフローが発生しないことを事前に確認するまで、2 つの整数を実際に加算しないため、これはより有望に思えます。したがって、未定義の動作は発生しません。
ただし、残念ながら、このソリューションは、加算演算が機能するかどうかをテストするためだけに減算演算を実行する必要があるため、最初のソリューションよりも効率が大幅に低下します。この (小さな) パフォーマンス ヒットを気にしないとしても、このソリューションが適切であると完全に確信しているわけではありません。この式lhs <= INT_MIN - rhs
は、符号付きオーバーフローが不可能であると考えて、コンパイラが最適化して取り除く可能性のある式とまったく同じように見えます。
ここでより良い解決策はありますか?1) 未定義の動作を引き起こさないこと、および 2) オーバーフロー チェックを最適化する機会をコンパイラに提供しないことが保証されているものはありますか? 両方のオペランドを符号なしにキャストし、独自の 2 の補数演算をローリングしてチェックを実行する方法があるのではないかと考えていましたが、その方法がよくわかりません。
ssl - 自己署名 SSL 証明書と nginx の問題
たとえば、私は abc.com というドメインを持っています。www.abc.com の自己署名 SSL 証明書を作成しましたが (*.abc.com でも)、abc.com では機能しません。
この問題を解決するには?
c - c printf 符号付き浮動小数点数
+ または - 記号が C の printf() の float 値の前に常に表示されるようにするためのフォーマッタは何ですか?
私はしばらくCをやっていなかったので、ウェブ上のどこで良いリファレンスを見つけることができますか?
c# - C# で一定のビット幅から拡張される符号
長さが5ビットの値があります。4 ビットが数値を決定し、5 番目のビットが符号を決定するため、-16 から +15 までの任意の値を保持します。C# で一定のビット幅から符号拡張を行うにはどうすればよいですか? 私はCで知っています、これを達成するために次のようなものを使うことができます:
C#でこれと似たようなことをするにはどうすればよいですか?
c++ - ループ変数を並列に署名する必要があるのはなぜですか?
オンラインのチュートリアルやリソースから OpenMP について学んでいます。parallel for
ループを使用して行列を2乗(それ自体で乗算)したい。IBM コンパイラーの資料で、 「反復変数はsigned
整数でなければならない」という要件を見つけました。これは GCC 実装にも当てはまりますか? OpenMP 標準で指定されていますか? もしそうなら、この要件の理由はありますか?
(予想される次元は よりもはるかに小さいため、それほど重要ではありませんがINT_MAX
、キャストが必要になります。)
c - C:キャストせずに符号なし変数で符号付き比較を実行する
次のシグネチャを持つ関数が必要です。
その出力は、に格納されているビットの2の補数ビューがに格納されているビットの2の補数ビューよりも大きい1
場合に限ります。それ以外の場合、出力はになります。例えば:a
b
0
関数は暗黙的/明示的な変換を行わないようにします(これらの変換は実装定義であり、したがって移植性がないため)
そのような実装の1つは次のとおりです。
この計算を実行するために条件ではなく算術を使用する実装を提案できますか?必要に応じて、1つの条件を使用できます
比較とCでの算術演算で符号なし/符号付き変数を組み合わせて使用することは、災害のレシピです。この関数は、問題を回避する方法の例です。
符号付き変数の比較の背後にあるアセンブリは、実装したい関数に似ていると思います(符号付き比較をサポートしていないアーキテクチャで)
java - 符号付きバイトの 16 進数へのバイナリ変換に関する質問
1) 2 進数を 10 進数に変換するとき、左端のビットが 0、1 などを表すことを理解しています。たとえば、0001 を 10 進数に変換するには、0*2^0+0*2^1+0*2^2+1*2^3 なので、10 進数の値は 8 になります。
2) たとえば、バイナリ 1000 0000 に変換される 16 進数 0x80 に署名した場合、このバイナリ表現の 10 進数値を計算するには、署名されているため、7 ビットを反転する必要があるため、1111111 を取得して 1 を加算すると、 -128 である 10000000。
私の質問は、2 番目のケースで符号付きバイトの 10 進数を計算しているときに、右端のビットを 0 として開始しなければならなかったため、....+1*2^8 になった理由です。2 番目のケースの 1) で計算したように、2^0 が一番左のビットではないのはなぜですか?
ありがとう。
unsigned - 符号付きと符号なしの16ビットBCDの違いは?
違いはどうやってわかりますか?たとえば、あなたが持っているとしましょう0110 0101 1001 0011
。符号なしBCDは6593ですが、符号付きの値は何ですか?
java - 署名付きアプレットを使用する他の方法はありますか
高い権限を持つアプレットを展開したい場合は、署名する必要があります。そのために、証明書が作成され、jar ファイルが jarsigner で署名されます。その後、HTML コードで、以前に署名したコード、コードベース、およびアーカイブ (jar) を指定する必要があります。
ただし、次の 2 つの機能を果たすサーブレットを作成しました。
- これは、コードベースが指す URL にあり、クラス バイトコードをアプレットに提供します。
- 同じサーブレットもシリアライゼーションを使用してアプレットと通信します。これにより、アプレットがクラスを取得するたびに、サーブレットに戻るコードベースに移動することがわかりません。
残念ながら、署名付きアプレットの場合、アーカイブが必要です。これで、サーブレットも Certificate オブジェクトをロードして、アプレットにも送信できるようになりました。セットアップは次のとおりです。ある時点で、アプレットはクラスのバイトコードを受け取り、証明書も持っています。アプレットがその証明書を使用して受信したすべてのクラスをインスタンス化できると便利です (そうしないと、jar からのコードは署名されており、外部はユーザーに不快なメッセージを表示するものではありません)。
Java 愛好家の皆さんへの質問です。 バイトコード データと証明書を使用してクラスを署名付きオブジェクトとしてインスタンス化し、プラグインが [セキュリティ] ダイアログを表示し、証明書を受け入れ、オブジェクトの権限を昇格させる方法はありますか? 私が見つけたのは、コードベース URL と証明書を受け入れ、署名プロセスに不可欠なクラス CodeSource があることです。私が確信していないのは、アプレット内のクラスのロードを傍受して、アーカイブを介して JAR ファイルを介して取得されていない追加の証明書をインストールする方法です。
あなたは何を言っていますか?本当にありがとう。