c语言如何将十进制转为二进制
更新时间:2023-07-15第一段:直接除以二法
将十进制数除以2,得到的商和余数依次排列,直到商为零。如:十进制数43转二进制,其过程如下图所示:
#includevoid DecToBin1(int n) { int bit[32] = {0}; int i = 0; while (n > 0) { bit[i++] = n % 2; n /= 2; } for (i = 31; i >=0; i--) printf("%d", bit[i]); } int main() { int n; scanf("%d", &n); DecToBin1(n); return 0; }
第二段:移位法
将十进制数不断右移,直到最后一位为1时停止,过程中各个二进制位是余数,逆序排列即可。如:十进制数57转二进制,其过程如下图所示:
#includevoid DecToBin2(int n) { int i; for (i = 31; i >= 0; i--) { if (n & (1 << i)) break; } for (; i >= 0; i--) { if (n & (1 << i)) printf("1"); else printf("0"); } } int main() { int n; scanf("%d", &n); DecToBin2(n); return 0; }
第三段:位运算法
用位运算代替除法,用位运算代替取模运算,适用于数据量大的情况。如:十进制数36转二进制,其过程如下图所示:
#includevoid DecToBin3(int n) { int i; for (i = 31; i >= 0; i--) { if (n >> i & 1) printf("1"); else printf("0"); } } int main() { int n; scanf("%d", &n); DecToBin3(n); return 0; }
第四段:总结
本文主要介绍了三种将十进制转为二进制的方法,分别是直接除以二法、移位法和位运算法。直接除以二法思路简单,代码实现容易,但十进制数较大时会超时。移位法适用于较大的数,但其缺点是无法得知二进制数长度。位运算法较为高效,且代码简洁,但要求程序员熟悉位运算的操作规则。在实际应用中,根据处理的数据情况和具体的需求而选择不同的算法。