C语言printf按二进制输出整数

/* --- PRINTF_BYTE_TO_BINARY macro's --- */
#define PRINTF_BINARY_PATTERN_INT8 "%c%c%c%c%c%c%c%c,"
#define PRINTF_BYTE_TO_BINARY_INT8(i)    \
    (((i) & 0x80ll) ? '1' : '0'), \
    (((i) & 0x40ll) ? '1' : '0'), \
    (((i) & 0x20ll) ? '1' : '0'), \
    (((i) & 0x10ll) ? '1' : '0'), \
    (((i) & 0x08ll) ? '1' : '0'), \
    (((i) & 0x04ll) ? '1' : '0'), \
    (((i) & 0x02ll) ? '1' : '0'), \
    (((i) & 0x01ll) ? '1' : '0')

#define PRINTF_BINARY_PATTERN_INT16 \
    PRINTF_BINARY_PATTERN_INT8              PRINTF_BINARY_PATTERN_INT8
#define PRINTF_BYTE_TO_BINARY_INT16(i) \
    PRINTF_BYTE_TO_BINARY_INT8((i) >> 8),   PRINTF_BYTE_TO_BINARY_INT8(i)
#define PRINTF_BINARY_PATTERN_INT32 \
    PRINTF_BINARY_PATTERN_INT16             PRINTF_BINARY_PATTERN_INT16
#define PRINTF_BYTE_TO_BINARY_INT32(i) \
    PRINTF_BYTE_TO_BINARY_INT16((i) >> 16), PRINTF_BYTE_TO_BINARY_INT16(i)
#define PRINTF_BINARY_PATTERN_INT64    \
    PRINTF_BINARY_PATTERN_INT32             PRINTF_BINARY_PATTERN_INT32
#define PRINTF_BYTE_TO_BINARY_INT64(i) \
    PRINTF_BYTE_TO_BINARY_INT32((i) >> 32), PRINTF_BYTE_TO_BINARY_INT32(i)
/* --- end macros --- */

使用

 int main(void)
 {
	 u32 number = 0x1FFFFFE;
	 printf("My Flag "	PRINTF_BINARY_PATTERN_INT32 "\n",
	PRINTF_BYTE_TO_BINARY_INT32(number));
}

输出

 

C语言可以通过以下方式以二进制方式输出整数和浮点数: 对于整数: 1. 首先,使用printf函数来输出整数。例如,想要输出一个整数变量x的二进制表示,可以使用以下代码: ```c printf("%d的二进制表示为:", x); ``` 2. 然后,使用位运算和位掩码的方式,逐位判断整数变量x的二进制表示中的每一位是0还是1,并输出对应的结果。例如: ```c int bits = sizeof(x) * 8; // 获取整数变量x的位数 for (int i = bits - 1; i >= 0; i--) { int bit = (x >> i) & 1; // 获取第i位的值 printf("%d", bit); // 输出第i位的值 } printf("\n"); ``` 对于浮点数: 1. 首先,将浮点数转换成对应的二进制形式。可以使用union联合体来进行浮点数和整数之间的转换。例如,假设有一个浮点数变量f,可以通过以下代码将其转换为对应的二进制整数: ```c union { float f; int i; } converter; converter.f = f; // 将浮点数赋值给联合体的浮点数部分 int bin = converter.i; // 获取联合体的整数部分,即浮点数对应的二进制表示 ``` 2. 然后,使用位运算和位掩码的方式,逐位判断浮点数变量f的二进制表示中的每一位是0还是1并输出对应的结果。例如: ```c int bits = sizeof(f) * 8; // 获取浮点数变量f的位数 for (int i = bits - 1; i >= 0; i--) { int bit = (bin >> i) & 1; // 获取第i位的值 printf("%d", bit); // 输出第i位的值 } printf("\n"); ``` 这样,就可以以二进制方式输出整数和浮点数了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值