#include <stdio.h>
#include <limits.h> // 用于 CHAR_BIT(每字节的位数)
// 函数:打印任意数据的二进制表示
void printBinary(const void *data, size_t size)
{
const unsigned char *bytes = (const unsigned char *)data;
for (int i = size - 1; i >= 0; i--)
{ // 从高位到低位(大端序)
for (int j = CHAR_BIT - 1; j >= 0; j--)
{
printf("%d", (bytes[i] >> j) & 1);
}
printf(" ");
}
}
int main()
{
char ch = 'A'; // 字符
int num = -42; // 负数
float pi = 3.14f; // 浮点数
// 1. 打印字符信息
printf("字符 '%c' 的:\n", ch);
printf(" ASCII码 (%%d): %d\n", ch);
printf(" 内存二进制 (sizeof=%zu): ", sizeof(ch));
printBinary(&ch, sizeof(ch)); // 输出: 01000001 (A 的 ASCII)
printf("\n\n");
// 2. 打印整数信息
printf("整数 %d 的:\n", num);
printf(" 十六进制 (%%x): %x\n", num);
printf(" 内存二进制 (sizeof=%zu): ", sizeof(num));
printBinary(&num, sizeof(num)); // 输出: 11111111 11111111 11111111 11010110 (补码)
printf("\n\n");
// 3. 打印浮点数信息
printf("浮点数 %f 的:\n", pi);
printf(" 科学计数法 (%%e): %e\n", pi);
printf(" 内存二进制 (sizeof=%zu): ", sizeof(pi));
printBinary(&pi, sizeof(pi)); // 输出: 01000000 01001000 11110101 11000011 (IEEE 754)
printf("\n");
return 0;
}