c语言以16进制输出大写字母,C语言二进制、八进制、十六进制整数书写和输出...

文章目录

一、二进制、八进制、十六进制整数的书写

1、二进制

2、八进制

3、十六进制

4、需要注意的坑

二、二进制、八进制、十六进制整数的输出

三、获取视频教程

四、版权声明

整数是我们生活中常用的数据类型,也是编程中常用的一种数据,C语言用int关键字来定义整数变量(int 是 integer 的简写)。

在定义变量的时候,可以加signed、unsigned、short和long四种修饰符。

signed:有符号的,可以表示正数和负数。

unsigned:无符号的,只能表示正数,例如数组的下标、人的身高等。

short:短的,现在主流的64位操作系统下,整数占用内存4个字节,使用 4

个字节保存较小的整数绰绰有余,会空闲出两个字节来,这些字节就白白浪费掉了。在C语言被发明的早期,或者在单片机和嵌入式系统中,内存都是非常稀缺的资源,所有的程序都在尽可能节省内存。

long:长的,更长的整数。

一、二进制、八进制、十六进制整数的书写

一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊的写法,具体来说,就是在数字前面加上特定的字符,也就是加前缀。

1、二进制

二进制由 0 和 1 两个数字组成,使用时必须以0b或0B(不区分大小写)开头。

以下是合法的二进制:

int a = 0b101; // 换算成十进制为 5

int b = -0b110010; // 换算成十进制为 -50

int c = 0B100001; // 换算成十进制为 33

以下是非法的二进制:

int m = 101010; // 无前缀 0B,相当于十进制

int n = 0B410; // 4不是有效的二进制数字

请注意,标准的C语言并不支持上面的二进制写法,只是有些编译器自己进行了扩展,才支持二进制数字。换句话说,并不是所有的编译器都支持二进制数字,只有一部分编译器支持,并且跟编译器的版本有关系。

2、八进制

八进制由 0~7 八个数字组成,使用时必须以0开头(注意是数字 0,不是字母 o)。

以下是合法的八进制数:

int a = 015; // 换算成十进制为 13

int b = -0101; // 换算成十进制为 -65

int c = 0177777; // 换算成十进制为 65535

以下是非法的八进制:

int m = 256; // 无前缀 0,相当于十进制

int n = 03A2; // A不是有效的八进制数字

3、十六进制

十六进制由数字 0~9、字母 A~F 或a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头。

以下是合法的十六进制:

int a = 0X2A; // 换算成十进制为 42

int b = -0XA0; // 换算成十进制为 -160

int c = 0xffff; // 换算成十进制为 65535

以下是非法的十六进制:

int m = 5A; // 没有前缀 0X,是一个无效数字

int n = 0X3H; // H不是有效的十六进制数字

4、需要注意的坑

在现实生活和工作中,我们在写十进制数的时候,为了对齐或其它原因,在数值前面加0是无关紧要的,但是,在C语言中,不要在十进制数前加0,会被计算机误认为是八进制数。

二、二进制、八进制、十六进制整数的输出

下表是各种进制整数的输出格式。

86f56ab2bf290c609a75926cd0a4e001.png

细心的读者可能会发现,上表中没有二进制的输出格式,虽然部分编译器支持二进制数字的书写,但是却不能使用printf函数输出二进制数。您可以编写函数把其它进制数字转换成二进制数字,并保存在字符串中,然后在printf 函数中使用%s输出。

示例:

/*

* 程序名:book.c,此程序用于演示二进制、八进制、十六进制整数的输出。

* 作者:C语言技术网(www.freecplus.net) 日期:20190525。

*/

#include

int main()

{

int ii=100; // 定义变量ii,赋值十进制的100。

printf("十进制输出结果:%d\n",ii); // 十进制输出结果:100

printf("八进制、无前缀输出结果:%o\n",ii); // 八进制、无前缀输出结果:144

printf("八进制、有前缀输出结果:%#o\n",ii); // 八进制、有前缀输出结果:0144

printf("十六进制、无前缀输出结果:%x\n",ii); // 十六进制、无前缀输出结果:64

printf("十六进制、有前缀(小写)输出结果:%#x\n",ii); // 十六进制、有前缀(小写)输出结果:0x64

printf("十六进制、无前缀输出结果:%X\n",ii); // 十六进制、无前缀输出结果:64

printf("十六进制、有前缀(大写)输出结果:%#X\n",ii); // 十六进制、有前缀(大写)输出结果:0X64

}

三、获取视频教程

百万年薪程序员录制,《C/C++高性能服务开发基础》视频教程已在CSDN学院发布,优惠价12元,地址如下:

https://edu.csdn.net/course/play/29402

四、版权声明

C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。

来源:C语言技术网(www.freecplus.net)

作者:码农有道

如果这篇文章对您有帮助,请点赞支持,或在您的博客中转发此文,让更多的人可以看到它,谢谢!!!

相关推荐

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值