uvm寄存器模型怎么给定数据的位宽
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uvm寄存器模型怎么给定数据的位宽相关的知识,希望对你有一定的参考价值。
参考技术A 计算机在访问存储器时,用地址来进行索引,也就是根据地址来找到数据进行存储或读取 而计算机内最小的地址单位是字节地址,也就是按照字节来编排存储区的地址 由于每个字节是8位二进制数据,所以读写数据时,需要8位数据总线,一次可同时读写8位...在 c 中找到一个 int 的位宽;最佳跨平台方法
【中文标题】在 c 中找到一个 int 的位宽;最佳跨平台方法【英文标题】:finding the bit-width of an int in c; best-cross platform method 【发布时间】:2014-01-11 22:46:00 【问题描述】:我需要知道我的代码正在运行的系统中本机 int 的宽度(大小),以位为单位。
我可以使用“sizeof”来获取字符的宽度,但是,我的理解是,在 C 规范中,char 没有分配特定数量的位。
那么找到 int 位宽的最佳跨平台方法是什么?
【问题讨论】:
"... 需要知道 ... 的宽度(大小),以位为单位。" 那么标题最好是:“finding the bit-宽度 ..."? 是的,我很抱歉 - 已编辑 【参考方案1】:打开limits.h
,您应该会看到有关特定平台整数限制大小的所有信息。
这是您确定int
中有多少位的方法:
#include <limits.h>
printf("Number of bits in an int: %zu\n", sizeof(int) * CHAR_BIT);
如果您对特定平台的float
和double
限制感兴趣,请打开float.h
。
【讨论】:
【参考方案2】:CHAR_BIT
(来自<limits.h>
)是char
中的位数,所以
sizeof(int) * CHAR_BIT
就是你要找的。p>
CHAR_BIT
在“5.2.4.2.1 整数类型的大小”中指定
符合 C99 标准。
添加: Open Group 规范可能会很有趣
http://pubs.opengroup.org/onlinepubs/7999959899/basedefs/limits.h.html状态:
限制 CHAR_BIT、SCHAR_MAX 和 UCHAR_MAX 的值是 现在需要分别为 8、+127 和 255。
【讨论】:
如果它是一个符合 Posix 的系统,你可以使用WORD_BIT
,fwiw。否则,不能保证int
中没有填充位。【参考方案3】:
如果每个字符不使用 8 位,我会感到非常惊讶。你可以用更多的字符填充一个字符,然后它应该像 0xFFFF 一样,看看它的值是什么。
【讨论】:
不要太惊讶!大于 8 位的字符实际上很常见。以上是关于uvm寄存器模型怎么给定数据的位宽的主要内容,如果未能解决你的问题,请参考以下文章