- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
为什么需要八进制和十六进制?
编程中,我们常用的还是 10 进制……必竟 C/C++是高级语言。比如:
int a = 100,b = 99。
不过,因为数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进 制,可以更直观地解决问题。
但,二进制数太长了。比如 int 类型占用 4 个字节,32 位。比如 100,用 int 类型的二进制数表达将是:
0000 0000 0000 0000 0110 0100
面对这么长的数进行思考或操作,没有人会喜欢。因此, C,C++ 没有提供在代码直接写二进制数的方法。
用 16 进制或 8 进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不
过,为什么偏偏是 16 或 8 进制,而不其它的,诸如 9 或 20 进制呢?
2、8、16,分别是 2 的 1 次方,3 次方,4 次方。这一点使得三种进制之间可以非常直接地互相转换。8 进制或 16 进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。
二、八、十六进制数转换到十进制数
二进制数转换为十进制数
二进制数第 0 位的权值是 2 的 0 次方,第 1 位的权值是 2 的 1 次方…… 所以,设有一个二进制数:0110 0100,转换为 10 进制为:
下面是竖式:
0110 0100 换算成 十进制
第 0 位
0
*
20
=
0
第 1 位
0
*
21
=
0
第 2 位
1
*
22
=
4
第 3 位
0
*
23
=
0
第 4
第 4 位
0
*
24
=
0
第 5 位
1
*
25
=
32
第 6 位
1
*
26
=
64
第 7 位
0
*
27
=
0
100
用横式计算为:
0 * 20 + 0 * 21
+ 1 * 22
+ 1 * 23
+ 0 * 24
+ 1 * 25
+ 1 * 26
+ 0 * 27
= 100
0 乘以多少都是 0,所以我们也可以直接跳过值为 0 的位:
1 * 22
+ 1 * 23
+ 1 * 25
+ 1 * 26
= 100
八进制数转换为十进制数
八进制就是逢 8 进 1。
八进制数采用 0~7 这八数来表达一个数。
八进制数第 0 位的权值为 8 的 0 次方,第 1 位权值为 8 的 1 次方,第 2 位权值为 8 的 2
次方……
所以,设有一个八进制数:1507,转换为十进制为: 用竖式表示:
1507 换算成十进制。
第 0
第 0 位
7
*
80
=
7
第 1 位
0
*
81
=
0
第 2 位
5
*
82
=
320
第 3 位
1
*
83
=
512
839
同样,我们也可以用横式直接计算:
7 * 80
+ 0 * 81
+ 5 * 82
+ 1 * 83 = 839
结果是,八进制数 1507 转换成十进制数为 839
八进制数的表达方法
C,C++语言中,如何表达一个八进制数呢?如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出 7 以上的阿拉伯数字。但如果这个数是 123、是 567, 或那么它是八进制数还是 10 进制数,都有可能。
所以,C,C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个 0,如: 123 是十进制,但 0123 则表示采用八进制。这就是八进制数在 C、C++中的表达方法。
因为 C 和 C++都没有提供二进制数的表达方法,所以,这里所学的八进制是我们学习的,CtC++语言的数值表达的第二种进制法。
现在,对于同样一个数,比如是 100,我们在代码中可以用平常的 10 进制表达,例如在变量初始化时:
int a = 100。
我们也可以这样写:
int a = 0144。 //0144 是八进制的 100;一个 10 进制数如何转成 8 进制,我们后面会学到。
千万记住,用八进制表达时,你不能少了最前的那个 0。否则计算机会通通当成 10 进制。不过,有一个地方使用八进制数时,却不能使用加 0,那就是我们前面学的用于表达字符的“转义符”表达法。
八进制数在转义符中的使用
我们学过用一个转义符\加上一个特殊字母来表示某个字符的方法,如:\n表示换 行(line,而\t表示 Tab 字符,\则表示单引号。今天我们又学习了一种使用转义符的方法:转义符\后面接一个八进制数,用于表示 ASCII 码等于该值的字符。
比如,查一下第 5 章中的 ASCII 码表,我们找到问号字符?的 ASCII 值是 63,那么我们可以把它转换为八进值:77,然后用 \77来表示?。因为是八进制,所以本应写成\077,但因为 C,C++规定不允许使用斜杠加 10 进制数来表示字符,所以
您可能关注的文档
- 鸡西市2010年中考物理试题及答案.docx
- 鸡血藤煮鸡蛋的功效.docx
- 积极心理学分析和总结.docx
- 激光调腔与纵横模分析实验报告.docx
- 激光加工技术教学基本要求.docx
- 激光切割机实习报告.docx
- 激励分析和总结.docx
- 激励人上进的古诗词大全.docx
- 激励性语言分析和总结.docx
- 激励语言分析和总结.docx
- 2024年云南省勐腊县《执业药师之西药学专业二》考试必刷200题内部题库含答案(基础题).docx
- 2024年云南省勐腊县《一级注册建筑师之建筑物理与建筑设备》资格考试附参考答案(基础题).docx
- 统编版道德与法治五年级下册5、建立良好的公共秩序 表格式教案.pdf
- 2024年云南省勐腊县《一级注册建筑师之建筑物理与建筑设备》资格考试必背100题题库及参考答案(考试.docx
- 2024年云南省勐腊县《一级注册建筑师之建筑物理与建筑设备》资格考试必刷100题通关秘籍题库(夺冠系.docx
- 2024年云南省勐腊县《一级注册建筑师之建筑物理与建筑设备》资格考试内部题库(培优B卷).docx
- 2024年云南省勐腊县《一级注册建筑师之建筑物理与建筑设备》资格考试必背100题题库及参考答案(考试.docx
- 2024年云南省勐腊县《一级注册建筑师之建筑物理与建筑设备》考试必刷100题题库大全附参考答案(培优.docx
- 2024年云南省勐腊县《一级注册建筑师之建筑物理与建筑设备》资格考试内部题库(培优B卷).docx
- 2024年云南省勐海县《质量员之设备安装质量基础知识》考试必刷100题王牌题库【考点精练】.docx
最近下载
- (19三96)山西省尧都区部分联校课堂教学模式改革的研究与实践(名校课模讲座三之96).doc
- 硬笔楷书字帖常用字练习完整版整理.pdf
- 魏氏组织的形成原因及如何解决.doc
- 入职(电气技术员)测试题(含答案).doc
- 2022-2023年副主任医师(副高)-健康教育与健康促进(副高)考试题库1(含答案).docx VIP
- 2024年化工企业安全管理人员试题试题库真题A4版打印.docx
- 2023年PLC及其应用理论知识考核试题及答案.pdf
- 2024年电气控制与PLC专业知识考试题库及答案(含A.B卷).pdf VIP
- 使用林地可行性报告编写规范.pdf VIP
- 水产品 投标方案(技术方案).doc
文档评论(0)