c - 将位数减少 1

标签 c algorithm bit-manipulation bit

有没有通用的方法来表示包含 n 的数字位使用 n-1位;例如显示1001其中有 4 位,使用 XXX where X = {0|1}具有 3 位。此外,映射应该能够检索原始二进制文件而不会发生任何冲突。

这个page是迄今为止我发现的最相关的引用文献,它尝试计算位数,但不减少位数。

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

最佳答案

n 位有 2^n 个可能值,(n-1) 位有 2^(n-1) 个可能值。因此您无法无损地从前者转换为后者。

如果可能的话,您还可以使用 n-2 位递归地表示您的 n-1 位,等等。一切都可以用 0 位来表示:)

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

  10100
& 10011
= 10000

关于c - 将位数减少 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41816528/

相关文章:

java - 在 Java 中加密一个字符串,以便 C 程序可以解密它,而解密文本中没有任何填充?

c - 如何使用 realloc 来缩短字符串数组大小

c++ - C++ 中的图形表示

javascript - 在 JavaScript 中使用父/子列表从平面列表生成嵌套列表

C++ - 将 int 拆分为两个较小的数据类型

c - 如何打印用户输入内容的次数? "C."中 X 中的 Y

c - 'table' 未声明(首先在函数中使用它)

algorithm - 关于 Floyd-Warshall、Dijkstra 和 Bellman-Ford 算法之间的区别,我是否正确?

php - bool 值的按位运算

c - 这个按位运算如何检查 2 的幂?