【发布时间】:2012-03-15 13:57:17
【问题描述】:
我的CPU寄存器包含一个二进制整数0101,等于十进制数5:
0101 (4 + 1 = 5)
我希望寄存器包含等于十进制 10 的二进制整数,就好像原始二进制数 0101 是三进制(以 3 为底)并且每个数字恰好是 0 或 1:
0101 ( 9 + 1 = 10 )
如何在具有 1. 最少内存读取和 2. 最少硬件指令的现代 CPU 或 GPU 上做到这一点?
【问题讨论】:
-
您使用什么语言?数字的数据类型是什么?数组?一个字符序列?
-
二进制数是怎么给出的?作为一个整数?还是一个数字数组?
-
“binary”表示只有数字 0 和 1,“ternary”表示只有数字 0、1 和 2。我在 CPU 寄存器中有一个二进制整数,我希望该寄存器包含表示输入值的二进制整数,解释为三进制(以 3 为底)数。例如,如果输入是二进制 10,则输出应该是二进制 11,因为输入被解释为十进制值为 3 的三进制数。
-
@bmcnett:没有神秘的陌生人。为了清楚起见,SO 社区的另一位用户编辑了您的问题。现在比原来的版本好多了。问题(和答案!)没有锁定,其他人也可以改进,不仅仅是原始海报。
-
请尝试回答其他问题,由 cmets 提出(例如,您提到 CPU 和 GPU,但没有提到您使用的语言,是汇编语言、C 语言还是其他语言?)。只提 CPU 并不能帮助别人理解你。如果没有处理单元,无论如何都很难运行代码......
标签: math binary numbers bit-manipulation