差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 后一修订版 | 前一修订版 | ||
|
整数 [2018/09/11 08:59] group001 创建 |
整数 [2021/09/12 22:21] (当前版本) gongyu |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====整数 (integer)==== | ====整数 (integer)==== | ||
| 整数常数的定义规则如下。\\ | 整数常数的定义规则如下。\\ | ||
| - | -整数可以用十进制(decimal)、十六进制(hexadecimal)、八进制(octal)、二进制(binary)形式表示,表现形式为:\\ <null|+|-><size><sign:s|S><base: d|D|h|H|o|O|b|B><0~9|0~f|0~7|0~1|x|z>,其中size、sign和base是可选的。 | + | -整数可以用十进制(decimal)、十六进制(hexadecimal)、八进制(octal)、二进制(binary)形式表示,表现形式为:\\ |
| + | <null|+|-><size><sign:s|S><base: d|D|h|H|o|O|b|B><0~9|0~f|0~7|0~1|x|z>,其中size、sign和base是可选的。 | ||
| -最简单的整数是没有size、sign和base的十进制数,只用0~9,可选+或-,表示的是符号数(signed integer)。 | -最简单的整数是没有size、sign和base的十进制数,只用0~9,可选+或-,表示的是符号数(signed integer)。 | ||
| -sign必须和base一起使用。当base前面有sign标志时,表示的是符号数(signed integer);当base前面没有sign标志时,表示的是无符号数(unsigned integer)。 | -sign必须和base一起使用。当base前面有sign标志时,表示的是符号数(signed integer);当base前面没有sign标志时,表示的是无符号数(unsigned integer)。 | ||
| 行 13: | 行 14: | ||
| -注意:当把带有size 的负常数(sized signed constant numbers)赋给一个reg类型的变量时,不管这个变量是否是signed,对这个负常数做符号扩展(sign-extend)。 | -注意:当把带有size 的负常数(sized signed constant numbers)赋给一个reg类型的变量时,不管这个变量是否是signed,对这个负常数做符号扩展(sign-extend)。 | ||
| \\ | \\ | ||
| - | 例子: | + | |
| + | ### 例子: | ||
| + | |||
| + | <code verilog> | ||
| //1. Unsized constant numbers | //1. Unsized constant numbers | ||
| 659 // is a decimal number | 659 // is a decimal number | ||
| 行 63: | 行 67: | ||
| m = -12'h123; //16'FEDD | m = -12'h123; //16'FEDD | ||
| m = 12'shEDD; //16'FEDD | m = 12'shEDD; //16'FEDD | ||
| + | </code> | ||
| | | ||
| - | 我们要避免如下书写错误: | + | 我们要避免如下书写错误: |
| + | <code verilog> | ||
| case (sel[1:0]) | case (sel[1:0]) | ||
| 00: y = a; | 00: y = a; | ||
| 行 71: | 行 77: | ||
| 11: y = a; //not execute | 11: y = a; //not execute | ||
| endcase | endcase | ||
| + | | ||
| + | </code> | ||