問題タブ [sign-extension]
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 - 右シフト時に unsigned int が符号拡張されているように見えますか?
そのため、整数から特定のビット x から y の整数値を取得するための非常に短い関数をテストしようとしていましたが、発生している符号拡張に問題があります。unsigned int にキャストしてから unsigned int を使用してシフトしようとしましたが、うまくいかないようです。コードは次のとおりです。
符号なし整数のみをシフトしたため、符号拡張が発生している理由がわかりません。また、「addr」だけを使用してコードを実行し、符号なし int として使用しましたが、出力も変更されませんでした。
Linux マシンの gdb で関数を実行すると、index の出力値は 536870912 になり、オンラインでコンパイルすると (現在はコーディング グラウンド)、得られる値は 67108864 です。
編集: 値 536870912 を取得する方法をいくつかの人が尋ねてきました。両方のブレークポイントを介して gdb を実行し、p get_index(1)
gdb からコマンドを実行して取得しました。実際のコードは次のとおりです。
助けてくれてありがとう!
java - Java ビット単位または Byte と Int の間
Java で持っている値に対してビット単位または値を実行しようとしてbyte
います。
たとえば、私は実行しています:
これに対する私の期待される結果は0b00000000 00000000 00000000 11111111
、または255
です。しかし、私は-1
、またはを受け取ってい0b11111111 11111111 11111111 11111111
ます。
byte
操作を実行する前に Java が myをint
via 記号拡張に変換すると仮定しています0b11111111
。
c++ - char 配列を long にすると、予期しない値になります
バイト配列を long に変換しようとしました
私のシフトが正しくないようです。意図した値に対して
私は得る:
バグがどこにあるのか分かりますか?
c - Cでの符号拡張、加算および減算バイナリ
Cコードで16ビットから32ビットへの符号拡張を実装するにはどうすればよいですか?
ビット演算子を使用することになっています。足し算と引き算も必要です。誰かが私を正しい方向に向けることができますか? 私は最初の4つをやったが、残りは混乱している. for
ケースの 1 つで、どこかにループを組み込む必要があります。
算術演算子 ( +
、-
、/
、*
)を使用することは許可されておらず、if
ステートメントも使用できません。
現在編集中の switch ステートメントのコードは次のとおりです。
fortran - ビット操作のための gfortran 符号拡張
関数でビットを操作できるようにするために、zext()
Sun Studio Fortan コンパイラで関数を使用してに変換integer(kind=1)
していました。integer(kind=4)
ibits()
例:
この関数は gfortran コンパイラの一部ではないようです。
gfortran で利用できる同等の関数はありますか?
concatenation - 連結を使用した符号拡張
4 ビットの数値から 32 ビットの数値に符号拡張する必要があります。次のように MSB を 28 回繰り返そうとします。
しかし、私はエラーが発生します:
「{」付近の構文エラー
x
と定義されている :wire [31:0] x ;
a
と定義されている :input [3:0]a;
この連結は間違っていますか?