将位数减少1

时间:2017-01-23 22:04:42

标签: c algorithm bit-manipulation bit

是否存在使用n位表示包含n-1位的数字的通用方法;例如使用1001显示XXX where X = {0|1}有4位的YogaSpaceEvent。此外,映射应该能够在没有任何冲突的情况下检索原始二进制文件。

这个page是迄今为止我发现的最相关的参考,它试图计算位数,但不减少位数。

编辑:我知道这听起来不可能,但我很好奇是否有解决方法可以这样做!

2 个答案:

答案 0 :(得分:3)

n个位有2 ^ n个可能的值,而(n-1)个位有2 ^(n-1)个。所以你无法无损地从前者转换为后者。

如果可能的话,你也可以使用n-2比特递归地表示你的n-1比特。所有东西都可用0比特表示:)

您被链接的网页误导了,这解释了x &= x-1删除了位字符串中的1

  10100
& 10011
= 10000

答案 1 :(得分:1)

如果您设法在16个数字之间建立一对一的映射

,您将非常聪明
0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111

和八个数字

000,001,010,011,100,101,110,111.