佛山网站快速排名提升,简要列举网站常见类型,win10建设网站目录,2021没封的网站有人分享吗2) 八进制
八进制由 0~7 八个数字组成#xff0c;使用时必须以0开头#xff08;注意是数字 0#xff0c;不是字母 o#xff09;#xff0c;例如#xff1a;
//合法的八进制数int a 015; //换算成十进制为 13 int b -0101; //换算成十进制为 -65 int c 0177777; //换…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~9 十个数字组成没有任何前缀和我们平时的书写格式一样不再赘述。
二进制数、八进制数和十六进制数的输出
C语言中常用的整数有 short、int 和 long 三种类型通过 printf 函数可以将它们以八进制、十进制和十六进制的形式输出。上节我们讲解了如何以十进制的形式输出这节我们重点讲解如何以八进制和十六进制的形式输出下表列出了不同类型的整数、以不同进制的形式输出时对应的格式控制符
shortintlong八进制%ho%o%lo十进制%hd%d%ld十六进制%hx 或者 %hX%x 或者 %X%lx 或者 %lX
十六进制数字的表示用到了英文字母有大小写之分要在格式控制符中体现出来
%hx、%x 和 %lx 中的x小写表明以小写字母的形式输出十六进制数%hX、%X 和 %lX 中的X大写表明以大写字母的形式输出十六进制数。
八进制数字和十进制数字不区分大小写所以格式控制符都用小写形式。如果你比较叛逆想使用大写形式那么行为是未定义的请你慎重
有些编译器支持大写形式只不过行为和小写形式一样有些编译器不支持大写形式可能会报错也可能会导致奇怪的输出。
注意虽然部分编译器支持二进制数字的表示但是却不能使用 printf 函数输出二进制这一点比较遗憾。当然通过转换函数可以将其它进制数字转换成二进制数字并以字符串的形式存储然后在 printf 函数中使用%s输出即可。考虑到读者的基础还不够这里就先不讲这种方法了。
【实例】以不同进制的形式输出整数
#include stdio.h int main() { short a 0b1010110; //二进制数字 int b 02713; //八进制数字 long c 0X1DAB83; //十六进制数字
printf(“a%ho, b%o, c%lo\n”, a, b, c); //以八进制形似输出 printf(“a%hd, b%d, c%ld\n”, a, b, c); //以十进制形式输出 printf(“a%hx, b%x, c%lx\n”, a, b, c); //以十六进制形式输出字母小写 printf(“a%hX, b%X, c%lX\n”, a, b, c); //以十六进制形式输出字母大写 return 0; }
运行结果 a126, b2713, c7325603 a86, b1483, c1944451 a56, b5cb, c1dab83 a56, b5CB, c1DAB83
从这个例子可以发现一个数字不管以何种进制来表示都能够以任意进制的形式输出。数字在内存中始终以二进制的形式存储其它进制的数字在存储前都必须转换为二进制形式同理一个数字在输出时要进行逆向的转换也就是从二进制转换为其他进制。
输出时加上前缀
请读者注意观察上面的例子会发现有一点不完美如果只看输出结果
对于八进制数字它没法和十进制、十六进制区分因为八进制、十进制和十六进制都包含 0~7 这几个数字。对于十进制数字它没法和十六进制区分因为十六进制也包含 0~9 这几个数字。如果十进制数字中还不包含 8 和 9那么也不能和八进制区分了。对于十六进制数字如果没有包含 a~f 或者 A~F那么就无法和十进制区分如果还不包含 8 和 9那么也不能和八进制区分了。
区分不同进制数字的一个简单办法就是在输出时带上特定的前缀。在格式控制符中加上#即可输出前缀例如 %#x、%#o、%#lX、%#ho 等请看下面的代码
#include stdio.h int main() { short a 0b1010110; //二进制数字 int b 02713; //八进制数字 long c 0X1DAB83; //十六进制数字
printf(“a%#ho, b%#o, c%#lo\n”, a, b, c); //以八进制形似输出 printf(“a%hd, b%d, c%ld\n”, a, b, c); //以十进制形式输出 printf(“a%#hx, b%#x, c%#lx\n”, a, b, c); //以十六进制形式输出字母小写 printf(“a%#hX, b%#X, c%#lX\n”, a, b, c); //以十六进制形式输出字母大写
return 0; }
运行结果 a0126, b02713, c07325603 a86, b1483, c1944451 a0x56, b0x5cb, c0x1dab83 a0X56, b0X5CB, c0X1DAB83
十进制数字没有前缀所以不用加#。如果你加上了那么它的行为是未定义的有的编译器支持十进制加#只不过输出结果和没有加#一样有的编译器不支持加#可能会报错也可能会导致奇怪的输出但是大部分编译器都能正常输出不至于当成一种错误。 下面来实战一下验证一下数值在不同进制的表示下的情况
首先我们总结一下上面的内容
各进制表示
二进制表示使用时必须以0b或0B不区分大小写开头八进制表示使用时必须以0开头注意是数字 0不是字母 o十六进制表示使用时必须以0x或0X不区分大小写开头
各进制打印
二进制打印C语言没有提供打印数值二进制表示的方式八进制打印printf(“%o”, n) printf(“%#o”, n)十进制打印printf(“%d”, n) printf(“%#d”, n)十六进制打印printf(“%x”, n)
基本常识不管是哪种进制在计算机里面都是以0/1来表示的说的更具体一点都是以补码的形式存在。
一、首先演示一下用不同进制来表示同一个数值
#include stdio.h
//该函数用来打印unsigned char的二进制表示 void printf_bin_8(unsigned char num) { int k; unsigned char p (unsigned char)#
for (int k 7; k 0; k–) //处理8个位 {
自我介绍一下小编13年上海交大毕业曾经在小公司待过也去过华为、OPPO等大厂18年进入阿里一直到现在。
深知大多数Go语言工程师想要提升技能往往是自己摸索成长或者是报班学习但对于培训机构动则几千的学费着实压力不小。自己不成体系的自学效果低效又漫长而且极易碰到天花板技术停滞不前
因此收集整理了一份《2024年Go语言全套学习资料》初衷也很简单就是希望能够帮助到想自学提升又不知道该从何学起的朋友同时减轻大家的负担。
既有适合小白学习的零基础资料也有适合3年以上经验的小伙伴深入学习提升的进阶课程基本涵盖了95%以上Golang知识点真正体系化
由于文件比较大这里只是将部分目录大纲截图出来每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频并且后续会持续更新
如果你觉得这些内容对你有帮助可以添加V获取vip1024b 备注Go
一个人可以走的很快但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人都欢迎扫码加入我们的的圈子技术交流、学习资源、职场吐槽、大厂内推、面试辅导让我们一起学习成长
项目、讲解视频并且后续会持续更新**
如果你觉得这些内容对你有帮助可以添加V获取vip1024b 备注Go [外链图片转存中…(img-EQ47xrhT-1712959253361)]
一个人可以走的很快但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人都欢迎扫码加入我们的的圈子技术交流、学习资源、职场吐槽、大厂内推、面试辅导让我们一起学习成长