四种进制间存在12种转换关系一、十进制--->二、八、十六进制1.十进制-->二进制①正整数:以25为例(25)10=(11001)B 当位数不够时,高位补零(比如八位时,写为00011001)②负整数:先将其对应的正整数转换成二进制,然后将二进制取反,最后对结果加一如:-25-->(25)10-->(11001)B-->(00110)B-->(001...
本文主要对有符号数的
十
进制与
二进制
表示以及一些数值变换进行简单的总结。定义一个宽度为 DW 的
二进制
补码格式的数据 dbin ,其表示的有符号
十
进制数字为 ddec 。
reg [DW-1:0] dbin ;
1.
十
进制有符号数转
二进制
补码
正数的补码为原码。假如
十
进制数 ddec 为负数,则计算其对应的
二进制
补码的方法主要有 2 种:
①将ddec 最高位符号位改写为 1,剩余数值部分取反加一。例如,4bit 数字 -6 的数值部分为 4’b0110,取反加一后为 4’b0010,高位改写后为
for (i = 0; i < str.len(); i++) begin
if (str[i] >= '0' && str[i] <= '9')
hex = (hex << 4) | (str[i] - '0');
else if (str[i] >= 'A' && str[i] <= 'F')
hex = (hex << 4) | (str[i] - 'A' + 10);
else if (str[i] >= 'a' && str[i] <= 'f')
hex = (hex << 4) | (str[i] - 'a' + 10);
$error("非法字符 %c", str[i]);
endfunction
// 调用
转换
函数
assign hex = str_to_hex(str);
endmodule
在这个示例代码中,我们定义了一个名为 string_to_hex 的模块,它有一个输入参数 str 和一个输出参数 hex。我们使用了一个名为 str_to_hex 的函数来实现将字符串转为
十六进制
的功能,该函数接收一个字符串参数并返回一个
十六进制
的数值。在函数中,我们遍历字符串的每个字符,并根据字符的值来计算出相应的
十六进制
值,最后将它们拼接起来。
然后,在模块的 assign 语句中,我们将 str_to_hex 函数的返回值赋值给输出参数 hex。这样,当模块被实例化并传入一个字符串参数时,它将自动计算出对应的
十六进制
数值并输出。