没有合适的资源?快使用搜索试试~ 我知道了~
ASCII算法及表ASCII算法及表ASCII算法及表ASCII算法及表ASCII算法及表ASCII算法及表
资源推荐
资源详情
资源评论
OCT(八进制)
最全 ASCII 码对应表—与键盘按键对应值
ASCII 码的算法
码的算法码的算法
码的算法:
::
:
A 在 ascii 中定义为 01000001,也就是十进制 65,有了这个标准后,当我们输入 A 时,计算机就可以
通过 ascii 码知道输入的字符的二进制编码是 01000001。而没有这样的标准,我们就必须自己想办法告诉
计算机我们输入了一个 A;没有这样的标准,我们在别的机器上就需要重新编码以告诉计算机我们要输入 A。
ascii 码指的不是十进制,是二进制。只是用十进制表示习惯一点罢了,比如在 ascii 码中,A 的二进制编
码为 01000001,如果用十进制表示是 65,用十六进制表示就是 41H。
在 ascii 码表中,只包括了一些字符、数字、标点符号的信息表示,这主要是因为计算机是美国发明的,
在英文下面,我们使用 ascii 表示就足够了!但是在汉字输入下面,用 ascii 码就不能表示了,而汉字只是
中国的通用表示,所以如果我们要在计算机中输入汉字,就必须有一个像 ascii 码的标准来表示每一个汉字,
这就是中国的汉字国标码,它定义了汉字在计算机中的一个表示标准。通过这个标准,但我们输入汉字的
时候,我们的输入码就转换为区位码,通过唯一的区位码得到这个汉字的字形码并显示出来。当然汉字的
区位码在计算机中也是用二进制表示的!
二进制数转换为十进制数
二进制数第 0 位的权值是 2 的 0 次方,第 1 位的权值是 2 的 1 次方……
所以,设有一个二进制数:0110 0100,转换为 10 进制为:
下面是竖式:
0110 0100 换算成 十进制
第 0 位 0 * 2^0 = 0
第 1 位 0 * 2^1 = 0
第 2 位 1 * 2^2 = 4
第 3 位 0 * 2^3 = 0
第 4 位 0 * 2^4 = 0
第 5 位 1 * 2^5 = 32
第 6 位 1 * 2^6 = 64
第 7 位 0 * 2^7 = 0
---------------------------
100
用横式计算为:
0 * 2^0 + 0 * 2^1 + 1 * 2^2 +0*2^3+ 0 * 2^4 + 1 * 2^5 + 1 * 2^6 + 0 * 2^7 = 100
0 乘以多少都是 0,所以我们也可以直接跳过值为 0 的位:
1 * 2^2 + 1 * 2^5 + 1 * 2^6 = 100
6.2.2 八进制数转换为十进制数
八进制就是逢 8 进 1。
八进制数采用 0~7 这八数来表达一个数。
八进制数第 0 位的权值为 8 的 0 次方,第 1 位权值为 8 的 1 次方,第 2 位权值为 8 的 2 次方……
所以,设有一个八进制数:1507,转换为十进制为:
用竖式表示:
1507 换算成十进制。
第 0 位 7 * 8^0 = 7
第 1 位 0 * 8^1 = 0
第 2 位 5 * 8^2 = 320
第 3 位 1 * 8^3 = 512
--------------------------
839
同样,我们也可以用横式直接计算:
7 * 8^0 + 0 * 8^1 + 5 * 8^2 + 1 * 8^3 = 839
结果是,八进制数 1507 转换成十进制数为 839
6.2.3 八进制数的表达方法
C,C++语言中,如何表达一个八进制数呢?如果这个数是 876,我们可以断定它不是八进制数,因为八
进制数中不可能出 7 以上的阿拉伯数字。但如果这个数是 123、是 567,或 12345670,那么它是八进制数
还是 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,那就是我们前面学的用于表达字符的“转义符”表达法。
6.2.4 八进制数在转义符中的使用
我们学过用一个转义符'\'加上一个特殊字母来表示某个字符的方法,如:'\n'表示换行(line),而'\t'表示
Tab 字符,'\''则表示单引号。今天我们又学习了一种使用转义符的方法:转义符'\'后面接一个八进制数,用
于表示 ASCII 码等于该值的字符。
比如,查一下第 5 章中的 ASCII 码表,我们找到问号字符(?)的 ASCII 值是 63,那么我们可以把它转
换为八进值:77,然后用 '\77'来表示'?'。由于是八进制,所以本应写成 '\077',但因为 C,C++规定不允许
使用斜杠加 10 进制数来表示字符,所以这里的 0 可以不写。
事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,6.2.4 小节的内容,大
家仅仅了解就行。
6.2.5 十六进制数转换成十进制数
2 进制,用两个阿拉伯数字:0、1;
8 进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;
10 进制,用十个阿拉伯数字:0 到 9;
16 进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了 10 个数字啊?
16 进制就是逢 16 进 1,但我们只有 0~9 这十个数字,所以我们用 A,B,C,D,E,F 这五个字母来
分别表示 10,11,12,13,14,15。字母不区分大小写。
十六进制数的第 0 位的权值为 16 的 0 次方,第 1 位的权值为 16 的 1 次方,第 2 位的权值为 16 的 2
次方……
所以,在第 N(N 从 0 开始)位上,如果是是数 X (X 大于等于 0,并且 X 小于等于 15,即:F)
表示的大小为 X * 16 的 N 次方。
假设有一个十六进数 2AF5, 那么如何换算成 10 进制呢?
用竖式计算:
2AF5 换算成 10 进制:
第 0 位: 5 * 16^0 = 5
第 1 位: F * 16^1 = 240
第 2 位: A * 16^2 = 2560
第 3 位: 2 * 16^3 = 8192
---------------------------------
10997
直接计算就是:
5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997
(别忘了,在上面的计算中,A 表示 10,而 F 表示 15)
现在可以看出,所有进制换算成 10 进制,关键在于各自的权值不同。
假设有人问你,十进数 1234 为什么是 一千二百三十四?你尽可以给他这么一个算式:
1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0
6.2.6 十六进制数的表达方法
如果不使用特殊的书写形式,16 进制数也会和 10 进制相混。随便一个数:9876,就看不出它是 16
进制或 10 进制。
C,C++规定,16 进制数必须以 0x 开头。比如 0x1 表示一个 16 进制数。而 1 则表示一个十进制。
另外如:0xff,0xFF,0X102A,等等。其中的 x 也也不区分大小写。(注意:0x 中的 0 是数字 0,而不是字母 O)
以下是一些用法示例:
int a = 0x100F;
int b = 0x70 + a;
至此,我们学完了所有进制:10 进制,8 进制,16 进制数的表达方式。最后一点很重要,C/C++中,
10 进制数有正负之分,比如 12 表示正 12,而-12 表示负 12,;但 8 进制和 16 进制只能用达无符号的正
整数,如果你在代码中里:-078,或者写:-0xF2,C,C++并不把它当成一个负数。
6.2.7 十六进制数在转义符中的使用
转义符也可以接一个 16 进制数来表示一个字符。如在 6.2.4 小节中说的 '?' 字符,可以有以下表达方
式:
'?' //直接输入字符
'\77' //用八进制,此时可以省略开头的 0
'\0x3F' //用十六进制
同样,这一小节只用于了解。除了空字符用八进制数 '\0' 表示以外,我们很少用后两种方法表示一个
字符。
6.3 十进制数转换到二、八、十六进制数
6.3.1 10 进制数转换为 2 进制数
给你一个十进制,比如:6,如果将它转换成二进制数呢?
10 进制数转换成二进制数,这是一个连续除 2 的过程:
把要转换的数,除以 2,得到商和余数,
将商继续除以 2,直到商为 0。最后将所有余数倒序排列,得到数就是转换结果。
听起来有些糊涂?我们结合例子来说明。比如要转换 6 为二进制数。
“把要转换的数,除以 2,得到商和余数”。
那么:
要转换的数是 6, 6 ÷ 2,得到商是 3,余数是 0。 (不要告诉我你不会计算 6÷3!)
“将商继续除以 2,直到商为 0……”
现在商是 3,还不是 0,所以继续除以 2。
那就: 3 ÷ 2, 得到商是 1,余数是 1。
“将商继续除以 2,直到商为 0……”
现在商是 1,还不是 0,所以继续除以 2。
那就: 1 ÷ 2, 得到商是 0,余数是 1 (拿笔纸算一下,1÷2 是不是商 0 余 1!)
“将商继续除以 2,直到商为 0……最后将所有余数倒序排列”
好极!现在商已经是 0。
我们三次计算依次得到余数分别是:0、1、1,将所有余数倒序排列,那就是:110 了!
6 转换成二进制,结果是 110。
把上面的一段改成用表格来表示,则为:
被除数 计算过程 商 余数
6 6/2 3 0
3 3/2 1 1
1 1/2 0 1
(在计算机中,÷用 / 来表示)
如果是在考试时,我们要画这样表还是有点费时间,所更常见的换算过程是使用下图的连除:
(图:1)
请大家对照图,表,及文字说明,并且自已拿笔计算一遍如何将 6 转换为二进制数。
说了半天,我们的转换结果对吗?二进制数 110 是 6 吗?你已经学会如何将二进制数转换成 10 进制
数了,所以请现在就计算一下 110 换成 10 进制是否就是 6。
剩余20页未读,继续阅读
资源评论
yhbz002
- 粉丝: 1
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 微信小程序接口工具包,耗费服务器,耗费开发后台,开箱即用,轻松开发小程序.zip
- 微信小程序拼音导航.zip
- 微信小程序手势解锁(Dom实现,避免小程序Canvas卡顿问题),基于原生小程序.zip
- 微信小程序所有API promise化,支持await、支持请求列队、支持拦截小程序所有API.zip
- 微信小程序录音播放录音demo.zip
- 基于CMSIS-DAP协议的ESP8266/ESP32无线调试器设计源码
- 基于Python和JavaScript的swdz_crawls思维定制爬虫设计源码
- 基于Java和Kotlin的RxTool设计源码同步自Gitee
- 基于HomeAssistant的ha-homepage浏览器主页设计源码
- 基于C#、JavaScript、Java、CSS的中小型C-S架构设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功