在C语言中,二进制数的转换可以通过多种方法实现,具体方法取决于转换方向(如整数与二进制、十进制与二进制)和数据类型。以下是常见的转换方法及示例代码:
一、整数转二进制
使用位操作符(推荐) 通过循环和按位与运算符`&`逐位提取整数的二进制表示:
```c
include
void printBinary(int num) {
for (int i = 31; i >= 0; i--) {
printf("%d", (num & (1 << i)) ? 1 : 0);
}
printf("n");
}
int main() {
int num = 10;
printf("二进制表示为: ");
printBinary(num);
return 0;
}
```
该程序将整数10转换为二进制`1010`。
使用内置函数(如`itoa`)
C标准库未提供直接转换函数,但可通过自定义函数实现:
```c
include include char* intToBinary(int num, int bits) { char* binary = (char*)malloc(bits * sizeof(char)); for (int i = bits - 1; i >= 0; i--) { binary[i] = (num & (1 << i)) ? '1' : '0'; } binary[bits] = '0'; return binary; }
int main() {
int num = 255;
int bits = sizeof(num) * 8;
char* binary = intToBinary(num, bits);
printf("二进制表示为: %sn", binary);
free(binary);
return 0;
}
```
该程序将整数255转换为二进制字符串`11111111`。
二、二进制转十进制
逐位加权求和
通过循环将二进制字符串转换为十进制数:
```c
include include int binaryToDecimal(char* bin) { int result = 0; int len = strlen(bin); for (int i = 0; i < len; i++) { result = result * 2 + (bin[i] - '0'); } return result; } int main() { char bin = "10101010"; int decimal = binaryToDecimal(bin); printf("二进制 %s 转换为十进制为: %dn", bin, decimal); return 0; } ``` 该程序将二进制`10101010`转换为十进制`170`。 三、其他注意事项
输入验证: 转换前需验证输入的二进制字符串是否合法(仅含`0`和`1`)。 数据类型限制
性能优化:位操作方法比循环更高效,尤其适用于处理大量数据时。
通过以上方法,可灵活实现C语言中二进制数的转换需求。