c语言长整数二进制和十六进制
时间: 2023-12-31 22:07:37 浏览: 107
在 C 语言中,长整数类型可以使用 `long long` 或 `unsigned long long` 关键字进行声明。下面是一个示例程序,演示如何将长整数转换为二进制和十六进制:
```c
#include <stdio.h>
int main() {
unsigned long long num = 1234567890123456789ULL;
printf("二进制表示:%llx\n", num);
printf("十六进制表示:%llx\n", num);
return 0;
}
```
在上面的程序中,`%llx` 格式控制符用于打印一个长整数的十六进制表示,`%llu` 格式控制符用于打印一个无符号长整数的十进制表示。
如果需要将长整数转换为二进制字符串,则可以使用以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* to_binary_string(unsigned long long num) {
char* str = (char*) malloc((sizeof(num) * 8 + 1) * sizeof(char));
memset(str, 0, (sizeof(num) * 8 + 1) * sizeof(char));
char* p = str;
int i;
for(i = 0; i < sizeof(num) * 8; i++) {
*p++ = (num & (1ULL << (sizeof(num) * 8 - i - 1))) ? '1' : '0';
}
return str;
}
int main() {
unsigned long long num = 1234567890123456789ULL;
char* binary_string = to_binary_string(num);
printf("二进制表示:%s\n", binary_string);
free(binary_string);
return 0;
}
```
这个程序中,`to_binary_string()` 函数接收一个长整数参数,并返回一个指向该数的二进制字符串的指针。在函数内部,我们使用位运算和循环来将数字转换为二进制字符串。在主函数中,我们调用 `to_binary_string()` 函数,并打印字符串。请注意,我们需要释放内存,以避免内存泄漏。
阅读全文