当前位置: 首页 > article >正文

22. c语言怎么打印2进制、8进制、10进制、16进制数?

在 C 语言中,打印不同进制的数字格式可以使用不同的格式化字符串。以下是如何打印二进制八进制十六进制数值的方法:

1. 打印二进制

C 语言的 printf 函数没有内置直接打印二进制数的格式化符号,需要自定义函数来实现二进制打印。

示例代码:
#include <stdio.h>

// 自定义函数,打印整数的二进制表示,跳过前导0
void print_binary(int num) {
    int size = sizeof(num) * 8;  // 获取整数类型的总位数
    int started = 0;  // 标记是否已经遇到第一个1

	printf("0b");
    for (int i = size - 1; i >= 0; i--) {
        int bit = (num >> i) & 1;  // 通过位移提取每一位
        
        if (bit == 1) {
            started = 1;  // 遇到第一个1时,标记开始打印
        }
        
        if (started) {    // 只在遇到第一个1后开始打印
            printf("%d", bit);
        }
    }

    if (!started) {  // 如果没有遇到1,说明是0
        printf("0");
    }

    printf("\n");  // 打印完后换行
}

int main() {
    int x = 10;  // 10的二进制表示是1010
    printf("Binary of %d: ", x); //输出:Binary of 10: 0b1010
    print_binary(x);  // 打印二进制

    x = 0;  // 0的二进制表示是0
    printf("Binary of %d: ", x);/输出:Binary of 0: 0b0
    print_binary(x);

    return 0;
}
输出:
Binary of 10: 0b1010
Binary of 0: 0b0

2. 打印八进制

C 语言中,printf 函数的格式化符 %o 用于打印八进制数。

示例代码:
#include <stdio.h>

int main() {
    int x = 10;  // 10的八进制是 12
    printf("Octal: %o\n", x);  // 打印八进制
    return 0;
}
输出:
Octal: 12

3. 打印十进制

C 语言中,printf 函数的格式化符 %d%i 用于打印十进制数:

示例代码:
#include <stdio.h>

int main() {
    int x = 255;  // 255的十制是255
    printf("%i\n", x);  // 输出:255
    printf("%d\n", x);  // 输出:255
    return 0;
}
输出:
255
255

4. 打印十六进制

C 语言中,printf 函数的格式化符 %x%X 用于打印十六进制数:

  • %x:以小写字母打印(a, b, c, d, e, f)。
  • %X:以大写字母打印(A, B, C, D, E, F)。
示例代码:
#include <stdio.h>

int main() {
    int x = 255;  // 255的十六进制是FF
    printf("Hexadecimal (lowercase): %x\n", x);  // 小写
    printf("Hexadecimal (uppercase): %X\n", x);  // 大写
    return 0;
}
输出:
Hexadecimal (lowercase): ff
Hexadecimal (uppercase): FF

总结:

  • 二进制:通过自定义函数打印,C 语言没有内置的二进制格式化符。
  • 八进制:使用 %o 格式化符。
  • 十进制:使用 %d%i格式化符。
  • 十六进制:使用 %x(小写)或 %X(大写)格式化符。

http://www.kler.cn/a/292881.html

相关文章:

  • 《DiffusionDet: Diffusion Model for Object Detection》ICCV2023
  • 【p2p、分布式,区块链笔记 DAM】GUN/SEA(Security, Encryption, Authorization) 模块genkey
  • PostgreSQL 开启密码验证插件
  • 【JAVA】正则表达式中的中括弧
  • Python标准库模块的使用:math、datetime
  • Python如何用正则表达式匹配并处理文件名
  • 【SQL】Delete使用
  • ConfigBus
  • 基于Python的电商导购APP设计与实现
  • Opencv中的直方图(1)计算反向投影直方图函数calcBackProject()的使用
  • 【openwrt-21.02】T750 openwrt MT7916 使用Intel AX200的网卡WPS PBC连接失败问题分析及解决方案
  • C++学习笔记——day 1
  • 后缀表达式转中缀表达式
  • 攻防世界 unseping
  • 回归预测|基于粒子群优化核极限学习机PSO-KELM结合Adaboost集成的数据预测Matlab程序 多特征输入单输出
  • 使用 TinyML 和云支持的自动部署实现可持续个性化的设备内人体活动识别
  • PostgreSQL 12.2 版本升级到 16.4 版本
  • 【GC】垃圾回收原理分析
  • 维度不固定的多维数组形参笔记
  • 什么是AIGC?什么是AGI?
  • P8687 [蓝桥杯 2019 省 A] 糖果
  • 苹果mac数据恢复概率大吗 mac数据恢复专业软件哪个好用
  • Pyspark DataFrame常用操作函数和示例
  • javascript中数组遍历的所有方法
  • 云计算之云原生(下)
  • 【电机控制】TC275芯片——ADC外设驱动的配置与实现