我的计算机体系结构课程有一个家庭作业问题,要求我编写基本的PRPG。
据我了解,基本概念是采用一些起始编号并将其称为种子。从那里开始,将种子平方并存储为32位字。然后,删除第8位到第23位,合并0-7和24-31位,并对其进行符号扩展。将其存储回去,增加内存计数器,然后循环直到您拥有所需数量的数字。
我的问题是关于其余位组合后中间位的“丢弃”。人们到底会怎么做?我当时在考虑进行逻辑或移位,但我不确定该如何工作。
答案 0 :(得分:1)
您需要进行移位和遮罩操作。
用C语言编写,
int new, old;
int mask=0x000000ff ; //
new = (old & mask) // keeps only LS byte of old
| ((old >> 16) & ~mask) ; // and add MSByte at position 8:15
您只需要AND,OR,NOR(以补充掩码)和移位指令即可。
最好使用SRA而不是SRL进行右移,因为您可以免费使用符号扩展名。