最近はまった乗算の罠について ビット幅の罠 まずは以下のVerilog記述を見ていただきたい。a*b と c、いずれもaとbの乗算を行っている。どのように出力されるでしょうか? module test1; reg [1:0] a = 2'd2; reg [1:0] b = 2'd3; reg [3:0] c; init… >「8ビット幅で計算する」という意味が解ってないように思えるのですが、いかがですか? まさにその通りでした。 >これは、計算結果が9ビットや10ビットになっても、下位8ビットだけを使い、それより上のビットは無視する、ということです。 型名 サイズ ビット幅 範囲; char: 1: 8bit-128 〜 127(符号付きの場合は0 〜 255) ※1 signed char: 1: 8bit-128 〜 127: unsigned char: 1: 8bit: 0 〜 255

(b) a=4ビット,b=3ビット,sum=5ビット a=7,b=3のとき 00111 + 00011 = 01010(10) a=-7,b=-4のとき 11001 + 11100 = 10101(-15) 符号ビットの値を最上位に加える 図2 符号拡張-符号付き演算はビット幅が あわない場合は符号拡張が必要 ビット【bit / binary digit】とは、情報量の最小単位で、二つの選択肢から一つを特定する情報の量。語源は “binary digit” (二進法の数字)と言われ、コンピュータなどでは0と1のいずれかを取る二進数の一桁として表される。情報をすべてビット列に置き換えて扱うことを「デジタル」(digial)という。