私は16ビット幅で2の補数で表される数字 "A"を持っています。どうすればVerilogで "-A"を得ることができますか?2の補数を使用するVerilogの数値の否定
-1
A
答えて
0
reg [4:0] num;
reg signed [4:0] neg;
num= 5;
$display("num= %5b", num);
neg= -num;
$display("neg = %d", neg);
チェックこのリンクは:http://www.referencedesigner.com/tutorials/verilog/verilog_58.php
0
wire [15:0] A;
wire [15:0] M_A; // Minus A
// The thing about 2's complement, is that the complement can be computed as NEG(x) + 1.
// In the following way:
assign M_A[15:0] = ~A[15:0] + 1'b1;
+0
よろしくお願いします。私は "〜"を使ってビット賢明な逆転について知っていました。 – Naveen
0
あなたは-Aを取得するために保存された2の補数の2の補数を行うことができます。
ここに例があるとします。私は過去にそれをやった
- A = 10
So in 2's complement A = 0000_0000_0000_0010
Now for -A,
2's complement of A = 1111_1111_1111_1110 (-10 in 2's complement form)
- A = -20
So in 2's complement A = 1111_1111_1110_1100
Now for -A,
2's complement of A = 0000_0000_0001_0100 (20 in 2's complement form)
0
最も簡単な方法:
wire [7:0] A;
wire [7:0] neg_A;
assign A = 8'd4; // 4
assign neg_A = 0 - A; // -4
コンパイラ/シンセサイザは、このケースでは2の補数動作を実現するために十分にスマートで、コードが読みやすいです。
関連する問題
- 1. VERILOG:5ビットの2の補数を見つけるには
- 2. {2の補数}ビットシフト
- 3. Doubleの補数をどのようにして否定するのですか?
- 4. 2の補数に2進数
- 5. Perl - 256の補数の2の補数 - C++の等価物
- 6. 2の補数のアセンブリコード
- 7. 2の補数で16進値を表現する
- 8. 2の補数、高い値を与えるintへのバイト
- 9. 複数の値の補間
- 10. 2の補数の2進数の基数ソート
- 11. 補間用のインポート関数の使用
- 12. 2の補数算術
- 13. Golang:2の補数とfmt.Printf
- 14. 2の補数進減算
- 15. 2の補数データ表現
- 16. 2の補数、2つの負の2進数を減算する
- 17. gdb on linuxは2の補数を使用しません
- 18. Javaで負の数を2の補数に変換する
- 19. 負の数の2の補数の16進数を取得
- 20. Verilogで固定小数点値を出力する方法は?
- 21. Quartusで複数のVerilogファイルを使用する方法
- 22. 補間関数を使用する
- 23. Verilogの比較演算子を使用しない2つの数値の比較
- 24. 定数値を返すメソッドの使用
- 25. 符号付きの大きさ、1の補数、+46と-17の2の補数
- 26. 番号とその2の補数
- 27. 基本アーキテクチャの2の補数表現
- 28. バイナリで最小の2の補数
- 29. MIPSの2の補数と配列
- 30. アセンブリのASCIIと2の補数
まあ、 '-A'です。符号なしと2の補数の否定は同等の操作です。 – doynax
Aは負または正の整数です。 – Naveen
問題ではありません。単項マイナス演算子は、2の補数結果として表現可能であれば、正しい否定結果を生成します。 – doynax