我有一个算法,它在循环中使用C位运算符(<<,&,^,|,〜)执行2个64位无符号整数的除法。
现在我想消除左移<<运算符完全理解这是如何完成的,因为我已经可以合成AND,OR,XOR,而不是使用NAND门。
是否可以使用JUST NAND门执行左移1?我已经阅读了一些关于电子触控板的内容,但我在纯软件中实现这一点只是为了理解它。
我想避免使用<<或>>运算符完全不希望使用包括汇编在内的任何计算机语言的现有算术运算符。
我不是在上大学,也不是做家庭作业,只是好奇它是如何工作的,并希望在正确的方向上提供一些帮助。
答案 0 :(得分:7)
在硬件中,您可以实现左移1而不需要任何逻辑门。只需像这样连接数据线:
如果您想要更通用的内容,可以实现barrel shifter。这可以从多路复用器合成:
Barrel shifter http://images.books24x7.com/bookimages/id_7951/fig9-1.jpg
又可以从NAND门合成。
以下是关于该主题的综合硕士论文:Barrel Shifter Design, Optimization, and Analysis。