在不使用除法算法的情况下,C++中是否有将十进制数转换为二进制数的函数? 我想计算2个数字的二进制格式的不同位。像diff(0,2)是1位。或diff(3,15)是2位。 我想写diff功能。 谢谢二进制比较
二进制比较
回答
您可以通过计算两个数字的xor中的位来找到不同位的数量。 就是这样。
int count_bits(unsigned int n) {
int result = 0;
while(n) {
result += 1;
// Remove the lowest bit.
n &= n - 1;
}
return result;
}
int diff(unsigned int a, unsigned int b) {
return count_bits(a^b);
}
你能解释这是如何工作的?我无法理解count_bits(a^b)如何运行? –
我感觉这是家庭作业 - 您可能想更多地解释:p –
@Ava这是XOR。我解释了我的答案意味着什么。 – littleadv
您可以在序号使用XOR(如果Z = X XOR y时,其被不同地设置在X和Y将被设置为在Z 1,所设置的相同的X的每个比特的每个比特和Y将被设置为0),并使用简单的循环和移位来计算结果的位数。
从技术上讲,所有东西都已经是二元的。您只需要开始查看按位运算符来访问组成您正在查看的十进制数的各个位。
例如,
if (15 & 1) would check to see if 15 has its first bit turned on.
if (15 & 3) would check to see if its first 2 bits were turned on.
if (15 & 4) would check to see if its 3rd bit only was turned on.
你可以用和/或/ XOR /等做到这一点。谷歌按位运算符并阅读。
- 1. 二进制数比较
- 2. MySQL比较二进制排序与二进制字符串
- 3. 比较二进制整数ruby
- 4. 二进制搜索比较器
- 5. MySQL:高效的二进制值比较
- 6. 二进制搜索和eps比较
- 7. 比较两个二进制向量
- 8. 图灵机比较二进制
- 9. C比较二进制数与xor
- 10. 二进制搜索比较数
- 11. 比较两个二进制文件
- 12. 二进制字符串比较
- 13. 如何在Python中进行安全的二进制比较?
- 14. 如何更好地理解每比较一次比较二进制搜索?
- 15. 什么是二进制比较,它与文本比较有什么不同
- 16. 二进制字符串比较/分类与字典字符串比较/排序
- 17. Python十六进制比较
- 18. dotNet十进制类型容易出现二进制比较错误吗?
- 19. 祝福十六进制编辑器 - 比较2个二进制文件
- 20. 通过读取二进制数据比较Python中的图像
- 21. 二进制序列化与JSON与xml的比较
- 22. 比较字符串二进制(非字母数字字符)
- 23. 递归地比较目录,忽略所有二进制文件:
- 24. 冗余二进制表示中的比较RBR
- 25. SSIS使用条件拆分比较二进制列
- 26. 在mysql中使用二进制文本比较 - 效率陷阱?
- 27. 在C++上的二进制搜索与比较
- 28. 版本比较二进制文件在Python
- 29. 红宝石二进制字符串比较
- 30. 如何使用二进制搜索比较x509certificates
你是什么意思*“convert”*?任何数字*已经*为二进制格式,您将显示与实际存储方式混淆在一起。但请记住;如果您要对浮点数执行按位运算,则需要知道它们的存储方式。 –
数字以二进制格式存储,不需要转换。顺便说一句,你正在寻找http://en.wikipedia.org/wiki/Hamming_distance。 –
我知道,但这是任何方式来显示二进制格式的数字,而不用除法算法 –