二进制打印函数

在做UTF-8转GB2312的时候要查看汉字的编码范围
而在查看内存是都是以10进制显示
于是只好自己写一个打印二进制的格式的函数了。
void PRINTF(char * ptr)
{
unsigned char t = *ptr;
int tp = 8;
while( t != 0 )
{
  if( 128 == (t & 128) )
  {
   printf( "1" );
   tp--;
  }
  else
  {
   printf( "0" );
   tp--;
  }
  t = t << 1;
}

  while( 0 != tp )
  {
   printf("0");
   tp--;
  }

printf("/n");
}

### 实现 `printf` 输出二进制 尽管 C 语言标准库中的 `printf` 函数不支持 `%b` 这样的格式说明符来直接输出二进制数值[^1],可以通过自定义函数配合 `printf` 来达到目的。 #### 自定义函数实现二进制输出 通过创建一个辅助函数 `Print_Binary` 可以实现在控制台逐位打印整数对应的二进制表示: ```c #include <stdio.h> void Print_Binary(unsigned int x) { if (x > 1) { Print_Binary(x >> 1); } putchar((x & 1) ? '1' : '0'); } ``` 此方法采用递归方式处理每一位并调用 `putchar()` 发送字符到终端显示。对于非零输入值,先对其右移一位再继续递归直到最高有效位被处理完毕;随后依据当前最低位决定输出‘1’还是‘0’。 另一种方案是构建一个字符串作为缓冲区存储转换后的二进制序列,之后利用 `printf("%s", binaryString)` 完成最终呈现[^2]。 #### 使用示例 下面给出一段完整的代码片段用于展示上述两种技术的应用场景: ```c int main() { unsigned int num = 9; printf("Binary representation of %u is ", num); Print_Binary(num); char buffer[33]; // 足够容纳最大无符号整形的二进制串加上终止符'\0' sprintf(buffer, "%u", num); // 此处仅为占位操作 // 填充buffer为num的二进制表示... itoa(num, buffer, 2); // 需要包含<stdlib.h>, 注意某些编译器可能未内置itoa() // 或者手动实现类似的base conversion逻辑 printf("\nAnother way to show the same number as binary string: %s\n", buffer); return 0; } ``` 这段程序首先展示了如何即时计算并立即输出给定数字的二进制形式,接着介绍了怎样预先准备好一个代表该数值二进制表达式的字符串供后续使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值