二进制、八进制、十进制及十六进制的详解

(一)

先说一说进制的表示

1.  十进制

十进制表示其实就是我们平时用的数字系统,就像大家一直用的普通话一样,谁都懂!如“117”就是表示十进制的“117”。不过,有时候让你用别的进制来表示数字,就像是让你开着手推车在高速公路上行驶一样,随时都有可能翻车!

2. 十六进制

0x...或0X...后面加上数字表示16进制,这个规矩真是有点小玄妙!因为16进制中的“10”无法与“1”“0”区分,所以“9”以后的用字母表示,“10”用‘A’或‘a’表示,以此类推,“15”用‘F’或‘f’表示。这就像是开启了一个密码谜题,如果你不知道这个规则,就会像一只小羊跟在大羊群后面傻傻地走,被“10”和“A”这样的字母绊倒!

    “%d”是指以十进制输出
    printf("%d\n", 0x1A); // 输出十进制 26
	printf("%d\n", 0X1f); // 输出十进制 31
    printf("%d\n", 0x12); // 输出十进制 18
	printf("%d\n", 0X12); // 输出十进制 18
	printf("%d\n", 12);   // 输出十进制 12

 3. 八进制

 0...后面加上数字表示8进制

将八进制的数字以十进制输出
printf("%d\n", 012); // 输出十进制 10

4. 二进制

 0b...后面加上数字表示二进制

将二进制的数字以十进制输出
printf("%d\n", 0b1001); // 输出十进制 9

(二)

接下来说一说进制的输出

这里先说明一下,目前还没有二进制的输出格式,因此如果想要输出二进制,只能自己编写一个函数

1.“%x”或“%X”表示以十六进制的格式输出,这两种方式的区别就是“%x”输出时表示数字的字母和前导都是小写,“%X”则是大写。

    将八进制的数字以十六进制输出
    printf("%x\n", 032); // 输出十六进制 1a
	printf("%X\n", 032); // 输出十六进制 1A

这里并没有显示前导,在输出格式列表加上‘#’就可以显示前导了

    将八进制的数字以十六进制输出
    printf("%#x\n", 032); // 输出十六进制 0x1a
	printf("%#X\n", 032); // 输出十六进制 0X1A

2."%o"表示以八进制的格式输出

将十六进制以八进制输出
printf("%#o\n", 0x1a); // 输出八进制 032
printf("%#o\n", 0x1A); // 输出八进制 032
printf("%#o\n", 0X1a); // 输出八进制 032
printf("%#o\n", 0X1A); // 输出八进制 032

(三)

另外说一下输出ASCALL码对应的字符

1.输出格式中“/...”后面加上数字表示输出该八进制转换为十进制的ASCALL码对应的字符

printf("\31\n"); // 对应的十进制是 25,对应的ASCALL码是 ↓,因此输出 ↓

这里再说一下,对应转换成的十进制数字不能超过255,否则会出错,但我们一般无法输出128及以后对应的ASCALL字符,这里顺便讲讲解决这个问题的一个方法

①包含头文件 #include<windows.h>

②在main函数里写上一下语句:

SetConsoleOutputCP(437);

 

8进制中只有0到7这8个数字,所以如果你在后面加了8或者9这样的数字,系统就会认为你是在给自己设陷阱!总之,你闲着没事想写Bug,谁也拦不住你。

printf("\2718888\n"); // 输出 ╣8888,\271对应的ASCALL码是╣,后面的8888原样打印

2.输出格式中“/x...”后面加上数字表示输出该十六进制转换为十进制的ASCALL码对应的字符

不能用“/X...”这种输出格式输出该十六进制转换为十进制的ASCALL码对应的字符

    printf("\x2a\n");  // 输出 *
	printf("\x2A\n");  // 输出 *

同理,对应转换成的十进制数字不能超过255,否则会出错

 

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值