如何在PyGears中获得位宽?

问题描述

我如何在PyGears中计算代表一些数字所需的位数,例如: 4,6,-100等。

是否可以使用log2功能

解决方法

在大多数情况下,最好先将它们转换为PyGears类型,因为这将使您能够执行一些对硬件设计有用的其他操作。

对于整数,您可以使用Integer泛型来自动推断数字的相应整数硬件类型:

>>> from pygears.typing import Integer
>>> Integer(4)
Uint[3](4)
>>> Integer(6)
Uint[3](6)
>>> Integer(-100)
Int[8](-100)

每种PyGears类型都支持width属性,因此,如果您仅对数字表示形式的位宽感兴趣,则可以执行以下操作:

>>> Integer(4).width
3
>>> Integer(6).width
3
>>> Integer(-100).width
8

这也可以处理一些特殊情况,例如:

>>> Integer(0)
Uint[1](0)

例如,所有PyGears类型支持的一项附加有用功能是通过code()方法来计算二进制表示本身:

>>> hex(Integer(-100).code())
'0x9c'

出于完整性考虑,如果您只对数字的位宽感兴趣,可以使用bitw()中的函数pygears.typing

>>> bitw(4)
3
>>> bitw(6)
3
>>> bitw(-100)
8