問題タブ [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.
floating-point - 浮動小数点の符号と大きさよりも優れた表現がないのはなぜですか?
符号を気にせずに演算を実行できる整数の 2 の補数があります。これは、実装レベルで大きな助けになります。
同様に、非常に多くの浮動小数点演算がありますが、符号と大きさに依存しています。理由は何ですか?
システムのような 2 の補数がフロートに対して機能しないのはなぜですか?
algorithm - 2の補数の整数を乗算しているときにオーバーフローを検出するにはどうすればよいですか?
2つの数値を掛けて、オーバーフローがあったかどうかを検出したいと思います。それを行う最も簡単な方法は何ですか?
range - 符号付き 16 進数値の範囲
2 の補数で署名された 6 桁の 16 進数があるとします。その範囲はどうなりますか?
-(16 ^ 5) < x < (16 ^ 5)
正しい?
c - long int 関数への符号付き 16 進文字列
32 ビットまたは 24 ビットの符号付き (2 の補数) 16 進文字列を long int に変換する関数が必要です。(long int のサイズに関係なく) 32 ビット マシンと 64 ビット マシンの両方で動作し、マシンが 2 の補数マシンであるかどうかに関係なく動作する必要があります。
解決:
objective-c - NSData を ieee-754 または 2 の補数でプリミティブ変数に変換しますか?
私はObj-Cとcocoaの新しいプログラマーです。バイナリ ファイル (通常、天文学者が使用するFlexible Image Transport SystemまたはFITSバイナリ ファイル)を読み取るために使用されるフレームワークを作成しようとしています。抽出したいバイナリ データにはさまざまな形式があり、FITSファイルのヘッダーを読み取ってそのプロパティを取得します。
これまでのところ、FITSファイルのコンテンツを格納するクラスを作成し、ヘッダーをNSStringオブジェクトに分離し、バイナリ データをオブジェクトに分離することができましたNSData。また、バイナリ データを解釈するのに非常に価値のあるキー値をヘッダーから抽出できるメソッドを作成することもできました。
私は今、NSDataオブジェクトをプリミティブ配列 (、、double...の配列)intに変換しようとしています。shortしかし、ここで行き詰まり、助けていただければ幸いです。
FITSファイルに関するドキュメントによると、BITPIXキーの値に応じてバイナリ データを解釈する 5 つの可能性があります。
NSDataをプリミティブ配列に変換するために、以下に示す平和なコードを既に作成しています。
ただし、ループで出力する値は、期待される値とは大きく異なります (公式の FITS ソフトウェアを使用した場合と比較して)。したがって、 Obj-Cは IEEE-754規則をdouble使用しておらず、 Obj-Cは2 の補数ではないと思います。私はこの 2 つの規則 ( IEEEとtwos-complement ) に精通していないため、 Obj-Cでこの変換を行う方法を知りたいと考えています。 int
ヘルプや情報をお寄せいただきありがとうございます。
integer - なぜ負の数にバイアスをかけるのですか?
私のコンパイラで int が 16 ビットの場合、範囲は -32768 から 32767 (2 の補数のマシン) です。
負の数に1つの余分な数がある理由を知りたい. つまり、正の数は 32767 になりますが、負の数はもう 1 つ、つまり 32768 になります。
-32768 は 2 の補数 m/c でどのように表されますか?
c++ - 16 ビットの符号付き整数 (2 の補数) の MSB と LSB を結合します。
私は、整数を 16 ビットの 2 の補数として 2 つの部分で送信する独自のプロトコルを使用しています。最初に LSB が送信され、次に MSB が送信されます。元の値を復元する次のコードは正しいですか?
python - Pythonで符号付き整数を2の補数で16進数として出力するには?
負の整数 (4 バイト) があり、その 2 の補数表現の 16 進形式が必要です。
でも「FF…」が見たい。
c# - 2 の補数変換
2 の補数形式のバイトを正の整数バイトに変換する必要があります。-128 から 127 の範囲が 0 から 255 にマップされます。
編集混乱を解消するために、入力バイトは (もちろん) 0 から 255 の範囲の符号なし整数です。ただし、2 の補数形式を使用して -128 から 127 の範囲の符号付き整数を表します。たとえば、入力バイト値 128 (バイナリ 10000000) は、実際には -128 を表します。
余分な編集 さて、次のバイトストリームがあるとしましょう 0,255,254,1,127 . 2 の補数形式では、これは 0、-1、-2、1、127 を表します。これは、0 から 255 の範囲にクランプする必要があります。詳細については、この見つけにくい記事を参照してください: 2 の補数
c - Cで符号付き整数のエンコーディングを検出するには?
ISO C 標準では、2 の補数、1 の補数、および符号/大きさの 3 つの符号付き整数のエンコード方法が許可されています。
実行時にエンコーディングを検出する効率的または良い方法は何ですか (または、より良い解決策がある場合は別の時間に)? さまざまな可能性に合わせてbignumライブラリを最適化できるように、これを知りたいです。
私はこれを計算し、プログラムが実行されるたびに変数に格納することを計画しているので、非常に高速である必要はありません-プログラムの実行中にエンコーディングが変更されないことを前提としています:-)