-1

“此位已设置”甚至意味着什么,应该如何确定哪些位已设置,哪些未设置。

示例:如果我有二进制 0001 0010 = 十进制 18 我怎么知道第 1 位和第 4 位已设置?

澄清:在我的脑海中,没有编码

4

3 回答 3

0

通过您的“在我的脑海中,没有编码”的澄清,这个答案 总结得很好。目前尚不清楚您是否想知道从二进制数或十进制数设置哪些位,我假设是后者,因为查看是否从二进制数设置位是微不足道的。我会在鲍里斯的回答中添加几件事:

  • 如果数字 B 的值为 1,则设置数字 B 的位 K,这意味着您需要将 2 的 K 次方加到总和上才能得到 B。请记住,在二进制表示法中,每个正整数都表示为和2 的幂。没有 2 的幂可以表示为 2 的较小幂的和,从而使数字的二进制表示唯一。

  • 您可以立即知道第一位是否已设置,因为它定义了奇偶校验(0-偶数,1-奇数)。

  • 您可以通过找到小于您正在分析的数字的 2 的最大幂来了解最大设置位。不会设置除此之外的任何位(如果设置了,它们将大于您找到的 2 的幂,从而使其最大值无效)。

  • 从这里开始,你基本上按照鲍里斯告诉你的去做。这是对每个 2 的幂的线性检查。

我认为您可能想阅读有关内容的内容,以更好地了解您的要求。

于 2013-10-09T13:22:16.700 回答
0

I'm using the method based on substracting numbers.

You know powers of 2:

2^0 =   1
2^1 =   2
2^2 =   4
2^3 =   8
2^4 =  16
2^5 =  32
2^6 =  64
2^7 = 128

Then take any number you want and try substract the maximum from the powers of 2 but result has to be greater or equal to 0.

Example:

  1. Take the number 18.
  2. Try substract 128: 18-128 = -110, it means you cann't substract 128, the 7-th bit is 0
  3. Try substract 64: 18-64 = -46, it means you cann't substract 64, the 6-th bit is 0
  4. Try substract 32: 18-32 = -14, it means you cann't substract 32, the 5-th bit is 0
  5. Try substract 16: 18-16 = 2, it means you CAN substract 16, the 4-th bit is 1
  6. continue with the rest: 18-16 2
  7. Try substract 8: 2-8 = -6, it means you cann't substract 8, the 3-rd bit is 0
  8. Try substract 4: 2-4 = -2, it means you cann't substract 4, the 2-nd bit is 0
  9. Try substract 2: 2-2 = 0, it means you CAN substract 2, the 1-st bit is 1
  10. The rest of the number is 0, then every following bits are 0
于 2013-10-09T13:26:57.703 回答
0

你想要做的是将一个数字从 10 转换为 2。这是一个快速教程:http: //math.about.com/od/calculuslessons/a/changebase.htm

于 2013-10-09T13:03:47.090 回答