在C语言中,将数字转换为二进制可以通过以下方法实现,具体分为十进制转二进制和二进制输入转十进制两种情况:
一、十进制转二进制
位操作法
使用循环和位操作符(如右移 `>>`、取余 `%`)逐位提取二进制位,从低位到高位存储并输出。 ```c
include void printBinary(int num) { int bit; while (num > 0) { bit = num % 2; printf("%d", bit); num = num / 2; } printf(""); } int main() { int num = 10; printf("二进制表示为: "); printBinary(num); return 0; } ``` 除2取余法 通过不断除以2并记录余数,最后将余数逆序输出。 ```c include int main() { int n, i; printf("请输入一个十进制整数: "); scanf("%d", &n); int a = {0}; for (i = 0; n > 0; i++) { a[i] = n % 2; n = n / 2; } printf("十进制整数转换为二进制数是: "); for (i = 31; i >= 0; i--) { printf("%d", a[i]); } return 0; } ``` 二、二进制输入转十进制 字符数组解析 读取二进制字符串,逐位转换为十进制并累加。 ```c include int main() { char str; printf("请输入32位二进制数: "); scanf("%s", str); int n = 0; for (int i = 0; i < 8; i++) { if (str[i] == '1') n += 1 << (7 - i); } printf("对应的十进制数为: %dn", n); return 0; } ``` 位掩码法 使用位掩码逐位检查二进制位是否为1,并计算对应的十进制值。 ```c include int main() { char a; printf("请输入32位二进制数: "); scanf("%s", a); int n = 0; for (int i = 0; i < 32; i++) { if (a[i] == '1') n |= 1 << (31 - i); } printf("对应的十进制数为: %dn", n); return 0; } ``` 说明 位操作法适用于整数类型,通过位运算直接提取二进制位,效率较高。 除2取余法逻辑直观,适合教学和理解二进制转换原理。 二进制输入转十进制需注意输入位数和字符验证,避免溢出或错误解析。 以上方法可根据需求选择实现,建议优先使用标准库函数(如 `printf`)进行格式化输出,或结合位操作符优化性能。