给定16位序列,我想递归地反转这些位.
例如,1001 1110 0010 0110变为0110 0100 0111 1001.
我只能访问ADD,AND和NOT.
子程序接受2个参数,剩余要反转的位数和位值.它返回结果.
我正试着想办法做到这一点.突然出现的一件事就是有一系列的比特:0000 0000 0000 0001开始,然后将自己的剩余比特数加上-1次,然后用传入的比特模式对这些比特进行加权.问题是这看起来非常缺乏,而且我也不确定如何存储结果以反转位.
有什么暗示吗?这是功课,所以请提示:)
你已经发现你可以使用ADD向左移动(为自己添加一个值).所以你可以重复移位然后用一个高位设置的常数AND来从最高位到最低位提取位.你可以建立或退出AND和NOT(通过德摩根定律),这样你就可以重新组合这些位从最低到最高的或-ING开始以恒定1点漂移的留给你走了,这将给你的单位一起反转位序列.
将其转变为递归过程非常简单
| 归档时间: |
|
| 查看次数: |
2035 次 |
| 最近记录: |