Dav*_*ore 2 algorithm binary logic byte
作为我正在编写的算法的一部分,我需要找到一种方法将10位字转换为唯一的8位字.10位字由5对组成,其中每对只能等于0,1或2(从不3).例如:
|00|10|00|01|10|
Run Code Online (Sandbox Code Playgroud)
该值需要以某种方式合并为一个唯一的字节.
由于每对不能等于3,因此这个10位字永远不会代表各种各样的值,这使我认为可以创建一个算法来执行这种转换.最简单的方法是使用查找表,但是存储约680个值似乎浪费资源,这些值只能在我的程序中使用一次.我已经尝试过以某种方式将其中一对结合到其他对中,但是我所做的每一次尝试都产生了一种非独特的价值,而且我现在很快就没有想法!
有帮助吗?
您拥有的数字基本上是基数3.您只需要将其转换为基数2.
有5对,所以3 ^ 5 = 243个数字.8位是2 ^ 8 = 256个数字,所以它是可能的.
在基数之间进行转换的最简单方法是首先转到10.
所以,举个例子:
00|10|00|01|10
Base 3: 02012
Base 10: 2*3^3 + 1*3^1 + 2*3^0
= 54 + 3 + 2
= 59
Base 2:
59 % 2 = 1
/2 29 % 2 = 1
/2 14 % 2 = 0
/2 7 % 2 = 1
/2 3 % 2 = 1
/2 1 % 2 = 1
So 111011 is your number in binary
Run Code Online (Sandbox Code Playgroud)
这更详细地解释了上述过程.
请注意,一旦您将59
上面的内容存储为1字节整数,您可能已经拥有了所需的内容,因此可能不需要显式转换为base 2.
归档时间: |
|
查看次数: |
339 次 |
最近记录: |