“此位已设置”甚至意味着什么,应该如何确定哪些位已设置,哪些未设置。
示例:如果我有二进制 0001 0010 = 十进制 18 我怎么知道第 1 位和第 4 位已设置?
澄清:在我的脑海中,没有编码
“此位已设置”甚至意味着什么,应该如何确定哪些位已设置,哪些未设置。
示例:如果我有二进制 0001 0010 = 十进制 18 我怎么知道第 1 位和第 4 位已设置?
澄清:在我的脑海中,没有编码
通过您的“在我的脑海中,没有编码”的澄清,这个答案 总结得很好。目前尚不清楚您是否想知道从二进制数或十进制数设置哪些位,我假设是后者,因为查看是否从二进制数设置位是微不足道的。我会在鲍里斯的回答中添加几件事:
如果数字 B 的值为 1,则设置数字 B 的位 K,这意味着您需要将 2 的 K 次方加到总和上才能得到 B。请记住,在二进制表示法中,每个正整数都表示为和2 的幂。没有 2 的幂可以表示为 2 的较小幂的和,从而使数字的二进制表示唯一。
您可以立即知道第一位是否已设置,因为它定义了奇偶校验(0-偶数,1-奇数)。
您可以通过找到小于您正在分析的数字的 2 的最大幂来了解最大设置位。不会设置除此之外的任何位(如果设置了,它们将大于您找到的 2 的幂,从而使其最大值无效)。
从这里开始,你基本上按照鲍里斯告诉你的去做。这是对每个 2 的幂的线性检查。
我认为您可能想阅读有关此内容的内容,以更好地了解您的要求。
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:
你想要做的是将一个数字从 10 转换为 2。这是一个快速教程:http: //math.about.com/od/calculuslessons/a/changebase.htm