問題タブ [twos-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.
binary - 1 と 2 の補数システム
私は、これら 2 つのシステムの違いと、C プログラミングへの影響を理解しようとしています。
ウィキペディアから学んだことから:
- どちらのシステムも負の数を表すために使用されます
- 1 の補数はビット単位の NOT を負の数に適用します (システムには +0 と -0 があります)
- 2 の補数はステップ 2 と同様に実行され、1 が追加されます (+/-0 が削除されます)。
他に何か不足していますか?
私の質問:
- どのアーキテクチャがどのシステムをサポートしていますか? 最近最も一般的なものは何ですか (1 の補数または 2 の補数)?
- Cでプログラミングするとき、これらのシステムをどのような意味で考慮する必要がありますか? それは主に組み込みの世界でのみ意味がありますか?
前もって感謝します!
assembly - これら2つの場合のオフセットはどのように適用されますか?
まず、2の補数システムによって負の数がどのように表されるかという概念に精通しており、ジャンプ命令(短いまたは近い)がある場合、それに含まれるオフセットは常にEIPレジスタに追加され、存在しないことを知っています。オフセットがEIPレジスタから減算される場合(私が正しい場合)。しかし、負のオフセットが提示された次の2種類のアドレス指定の場合、常にベースに加算され、どの場合も減算されないジャンプ命令のオフセットが使用される場合と同じになるのではないかと思います。場合?
(GASM形式):
"base_address(offset、index register、scale)"のように:
「オフセット(ベースレジスタ)」のように:
2進数はeaxレジスタに加算されますか、それとも減算されますか?
twos-complement - 2 の補数減算
-5-8 両方の整数を 2 の補数形式で表してから加算する必要がありますか?
assembly - 過剰 N から 2 の補数
誰かがこれを行う方法を説明してもらえますか? 宿題ではありません。
誰かが私にこれを行う方法を説明してもらえますか?
まず、N を超える数の和の公式を 2 の補数の公式に変換するにはどうすればよいでしょうか。第二に、それをどのように正確に証明することになっていますか?
numbers - 2、1、または単に署名するのはいつですか?
バイナリで -3 が必要な場合は、符号付きビット、1 の補数、または 2 の補数を使用できますか?
しかし、どのような場合にメソッドを使用するのが適切でしょうか? なぜ?
8ビットを使用しましょう:
-3
署名付きはちょうど10000011
-3
とはただ11111100
-3
ツーでちょうどです11111101
binary - 2 進数を正しくパディングする方法 (基数の有無にかかわらず)
そこで、0 のパディングについて簡単な質問があります。私が作成した例を以下に示します。長さは問題ではなく、符号ビットはないと仮定しています。
前に2進数の整数部分をパディングすることは問題ないことを私は知っています(バッファやそのようなものにもかかわらず)。基数を扱うときは、それがどのように機能するかを決して思い出せません。基数の横にパディングしますか (b)、それとも数字の最後にパディングしますか (c)。また、このようなパディングはこれらの数値の補数に影響しますか?
ありがとう
編集: 私がこれを求めている理由は、バイナリから16進数、バイナリから8進数に変換しているためです。これを行うには、ビットを 4 または 3 のグループにグループ化する必要があります。十分なビットがないため、どこかにゼロを追加する必要があります。
twos-complement - 2 の補数の質問
私は 2 の補数に関連する aq を持っています。たとえば、2 の補数表現で符号付き 16 ビット 16 進数があるとします。
16ビットの場合は、現在12ビットしかないため、拡張する必要があります。左側を拡張する必要があることはわかっているので、0xffaa にします。
それは私の数が負であることを意味します、それは正しいですか?
java - 負の整数を2の補数のバイナリ形式に変換するにはどうすればよいですか?(Java)
たとえば、正と負の数値を2進形式に変換する必要があります。たとえば、2を「00000010」に、-2を「11111110」に変換します。12ビット程度は必要ないので、文字列がそれより長い場合は、先頭の符号ビットを削除するだけです。正の数になるようInteger.toBinaryString()
ですが、負の数になるものはありますか?
c - ビット単位の補数
、、のサンプル問題がありw=1
、解決策はですが、理由がわかりませんか?y=7
z=0
x = ~(w && y) | y;
x = -1
これが私の思考プロセスです:
(w && y)=(1 && 7)= 1〜1
1 inビットは
〜1in
ビットです0000 0001
1111 1110
ここから何をすべきかわからない。
c - unsignedchar回転
unsignedcharが何であるかについて少し混乱しています。署名された文字は、ビット形式の文字の表現ですよね?サンプルの問題では、このソリューションでは符号なし文字のビットであるnビット位置だけ右に回転しています。
誰かがcharの例とそれぞれのビットで説明できれば、それは大いにありがたいです。本当にありがとう。