問題タブ [ones-complement]

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.

0 投票する
5 に答える
806 参照

c - Cで符号付き整数のエンコーディングを検出するには?

ISO C 標準では、2 の補数、1 の補数、および符号/大きさの 3 つの符号付き整数のエンコード方法が許可されています。

実行時にエンコーディングを検出する効率的または良い方法は何ですか (または、より良い解決策がある場合は別の時間に)? さまざまな可能性に合わせてbignumライブラリを最適化できるように、これを知りたいです。

私はこれを計算し、プログラムが実行されるたびに変数に格納することを計画しているので、非常に高速である必要はありません-プログラムの実行中にエンコーディングが変更されないことを前提としています:-)

0 投票する
2 に答える
1374 参照

c++ - 小さい整数の最大値を大きい整数に割り当てる

次のコードを検討してください。

さて、私はこれが を出力することを完全に期待していまし255たが、代わりに を出力し4294967295ました。

C++ での整数昇格は知っていますが、なぜそうなるのか理解できません。私が理解している方法では、式はバイナリ~uint8_t(0)で評価する必要があります。1111 1111次に、演算子は、値を に符号拡張することにより、型を an (説明のために 32 ビットであると想定します)~に昇格させます。この昇格された値は、左辺値に割り当てられる必要があり、結果は になります。 int0000 0000 0000 0000 0000 0000 1111 1111xx == 255

しかし、明らかに私はこれを正しく理解していません。私は何が欠けていますか?

0 投票する
2 に答える
274 参照

binary - なぜ自分の補数表現が他の表現よりも優れているのですか?

符号付き数値の補数表現が現在最も人気があるようです(そしておそらく現代のハードウェアで使用されている唯一の表現です)。なぜそれが他のものよりも正確に優れているのですか?

0 投票する
2 に答える
1760 参照

binary - 1 と 2 の補数システム

私は、これら 2 つのシステムの違いと、C プログラミングへの影響を理解しようとしています。

ウィキペディアから学んだことから:

  1. どちらのシステムも負の数を表すために使用されます
  2. 1 の補数はビット単位の NOT を負の数に適用します (システムには +0 と -0 があります)
  3. 2 の補数はステップ 2 と同様に実行され、1 が追加されます (+/-0 が削除されます)。

他に何か不足していますか?

私の質問:

  1. どのアーキテクチャがどのシステムをサポートしていますか? 最近最も一般的なものは何ですか (1 の補数または 2 の補数)?
  2. Cでプログラミングするとき、これらのシステムをどのような意味で考慮する必要がありますか? それは主に組み込みの世界でのみ意味がありますか?

前もって感謝します!

0 投票する
2 に答える
308 参照

twos-complement - ビットが 1 の補数で反転されるのはなぜですか?

2 の補数に 1 を加算する前に 1 の補数で負の数を格納する場合、符号以外のすべてのビットが反転されるのはなぜですか? 違うのが記号だけだったらもっと簡単だと思います。私が考えることができる唯一の理由は、何らかの形でコンピューターにとってより簡単になるということです。

0 投票する
3 に答える
401 参照

c++ - -1 と ~0 の違いは何ですか

タイトルがすべてを物語っています: マイナス 1 とチルダ (1 の補数) ゼロの違いは何ですか?

この質問は、すべてのビットが設定されるビット マスクを指定する最良の方法についての議論中に出てきました。次のうちどれが良いですか?

また

それが逆になる他の用途はありますか?

更新: stackoverflow.com/q/809227/34509で、このトピックに関する同様の議論がありましたが 、以前の調査中に見逃していました。指摘してくれた Johannes Schaub に感謝します。

0 投票する
1 に答える
6196 参照

binary - 16進数を2進数に変換し、16ビットで1と2の補数を変換します

FFAD(16進数)を10進値に変換してから、1と2の補数を実行しようとしています。FFADは16ビット整数として表されます。FFADを2進数に変換すると、1111111110101101になります。

私の問題は、それが負の数であるかどうかをどうやって知るかです。

私はバイナリを持っています。通常は1の補数を実行するために、最後のビットを0から1に変更してからすべてのビットを反転しますが、16ビット整数として使用可能なビットはありません。16番目のビットは1なので、それは負の数であることを意味しますか?それをどのように補完しますか?私はこの問題に混乱しているだけであり、どんなポインタでも大歓迎です。

0 投票する
1 に答える
7602 参照

compiler-warnings - 警告:'整数変換は切り捨てになります'

ここで警告が表示されます。警告には、「整数変換は切り捨てになります」と書かれています。typecast(U16)を削除しても持続します。

この警告を解決するにはどうすればよいですか?以下のコードを使用して警告を削除しましたが、それが正しい方法かどうかはわかりません。

前もって感謝します!

0 投票する
3 に答える
46698 参照

complement - 正数と負数の 1 の補数を計算する方法は?

数を表すために 1 の補数を使用すると、どのような結果が得られますか?
たとえば、数値 01110 (正の数) の 1 の補数は 01110 または 10001 である必要がありますか?
数値が 10001 (負の数値) の場合、1 の補数は 01110 ですか?

0 投票する
1 に答える
178 参照

bit-manipulation - 2 の (N) = 1 の (N-1)

興味深い事実があります:

数 N の 2 の補数は、数 N から 1 を引いた 1 の補数と同じです

以下の結果は明らかです。

2 番目の結果を使用して、最初の結果をどのように証明できますか?