【发布时间】:2014-03-22 20:35:40
【问题描述】:
我正在实现一个简单的(虚拟)ALU 和其他一些芯片(加法器、乘法器等)。
我使用 2 的补码表示我的数字。
对于两个 16 位数字 x 和 y 的乘法,我想我会沿着这些线使用左移(这当然是在没有实际循环的情况下执行的):
设置总和[0..15]=0
设置 x'=x
for i=0...15 //(y[0] 是 LSB,y[15] 是 MSB)
- 如果 y[i]=1,则将 x' 加到 sum 中,然后将 x' 左移。
(这是标准方式吗?)
我的问题是左移:
如果有的话x[i]=1,在某个时候,x' 的 MSB 会变为 1,这会否定它。
这是一个问题,因为例如 2*2 使用上述方法给出“-4”。
所以,我的实际问题是:左移时是否还需要考虑符号位?
【问题讨论】:
标签: boolean-logic alu