信息学奥赛辅导讲义第一篇:数值与编码
计算机“数值”与“编码”
导读:
-
进制转换
-
数值编码(原码、反码、补码)
-
信息编码与存储
计算机在本质上是一个“电气化”设备。计算机工作的过程,和电视机、收音机类似,无非就是线路板上的电线“通与不通电”,那么转化成数值,也只能是0和1,总不能来个“半通不通”的2吧。所以计算机为什么采用二进制这个事,很简单,因为他是一个“家用电器”,仅此而已。其实这事,你冯(诺依曼)大爷早就想好了,直到今天还是这样。当然,如果量子计算机能普及,就不是两种状态这么low了哈……
二进制虽是计算机的母语,如果人每次和计算机打交道都要写一堆0和1,看着都眼晕。如果改写成几位的八进制或十六进制便好多了。
那好,接下来就进入我们的第一个正题:进制转换。
一、 进制转换
-
1. 基础:十进制与二进制转换
-
1) 二转十:按权展开,十进求和。
|
|
|
|
如:(1011.01)2=(11.25)10
-
十转二:除2取余,逆序输出
|
|
|
|
如:(89)10=(1011001)2
-
2. 八进制与二进制转换
|
|
|
|
如:(37.416)8=(11111.10000111)2
二转八无非就是以小数点为界,三位三位转化即可,当然,这要求我们背过部分二进制的值。以下数值需要熟练记住。
|
|
|
|
-
3. 十六进制与二进制转换
十六进制中:A代表10,B:11,C:12,D:13,E:14,F:15
|
|
|
|
如:(5DF.9)16=(10111011111.1001)2
二转十六无非就是以小数点为界,四位四位转化即可。
思考:
八进制如何与十进制转化?十六进制呢?
如:(36)8=(30)10 (1E)16=(30)10
和二进制的“权机制”如出一辙。
练习:(必考1-2提题)
1、 用十六进制、八进制、十进制写了一个如下等式,52-19=33,式子中三个数进制各不相同。则,52、19、33分别是()进制。
A.八,十,十六 B.十,十六,八
C.八,十六,十 D.十,八,十六
2、 十进制的算式3*512+7*64+4*8+5的运算结果,用二进制表示为()
A.10111100101 B.11111100101C.11110100101 D.11111101101
3、 下列无符号数中,最小的是()
A.(11011001)2 B. (75)10 C.(37)8 D. (2A)16
4、 与二进制数101.01011等值的十六进制数为()
A、A.B B、5.51 C、A.51 D、5.58
5、 (0.5)10=()16
A、0.1 B、0.75 C、0.8 D、0.25
6、 (2047)10-(3FF)16+(2000)8的结果是()
A、(2048)10 B、(2049)10 C、(3746)8 D、(1AF7)16
7、 十进制数100.625等值于二进制数的( )
A、1001100.101 B、1100100.101 C、1100100.011 D、E选项略
8、 以下二进制与十进制数23.456的值最接近的是( )
A、A10111.0101 B、11011.1111 C、10111.1111 D、E选项略
二、 数值的编码(原码、反码、补码)
-
1. 起源:原码、反码、补码的由来
数值在计算机中是以补码的方式存储的,在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念。
对于一个数, 计算机要使用一定的编码方式进行存储。 原码, 反码, 补码是计算机存储一个具体数字的编码方式。
一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数,分为有符号数,和无符号数。如果我们人为规定,对于有符号数,最高位0代表正数, 1代表负数。
比如:
十进制中的数 +2 ,计算机字长为8位,转换成二进制就是[00000010]。如果是 -2 ,就是 [10000010] 。这就是最简单的数值的原码表示。
但是原码能拿来用作计算机中的数值编码进行运算吗,恐怕各位要失望了。我们看一个例子:5-3,我们知道CPU这东西对工艺要求非常高,计算机里面里一般只有加法器,那就是要算-3+5,如果用原码:
-3:10000011 5:00000101 -3+5:10001000(-8)
显然是错误的,原码面对有符号的数直接傻了。然后计算机界当年的大佬们,很快就想到了补码这种神奇的东西。到底有多神奇呢,我们还是只做加法,但是符号位可以直接参与运算,而且完美解决了两个相反数相加为0的情况。
那么计算机中的补码怎么表示呢?规则是反码+1。其中反码:
正数的反码是其本身;负数的反码在其原码的基础上,符号位不变,其余各个位取反。
如:【x】= -1100111 【x】反=10011001
正数的补码就是正数本身,负数的补码就是符号位为1,其他各位按位取反+1(即在反码的基础上+1)。(重要考点)
如上例:
-3的补码:111111101(除符号位按位取反)
+5的补码:00000101 (正数补码是原码本身)
按位相加: 00000010 (向上溢出了个1,结果居然是准确的)
这样还居然顺便解决了0的符号以及两个编码的问题: 用[0000 0000]表示0,用[1000 0000]空出来可以表示-128。
举例:
十进制数 |
原码 |
反码 |
补码 |
85 |
0101 0101 |
0101 0101 |
0101 0101 |
-85 |
1101 0101 |
1010 1010 |
1010 1011 |
9 |
0000 1001 |
0000 1001 |
0000 1001 |
-9 |
1000 1001 |
1111 0110 |
1111 0111 |
-
2. 扩展:小数的定点、浮点表示
根据小数点是否可以移动,把小数表示分为定点表示和浮点表示。
我们假定现在的电脑,用32位表示一个小数,并且做一个统一规定,所有计算机中的小数点位置是固定的。如果让你来规定,你会怎么规定?
规定小数点往后点,那你说留几位,1位?2位?5位?精度太低了。那就往前?往前的话,小数位是多了,但是整数位一少,这个数也太小了吧?表示个零点几?你选吧,要么精度不够,要么数值范围过小。所以定点数,恕在下直言,这现意儿基本就是个概念,用不了……
采用浮点数,完美解决了这个问题,你给计算机一个大数,顶多阶码多点你给计算机一个小数位数多的,它就尾数多用点就是了;范围和精度实现了双赢。
N=2E*S(E为阶码、是有符号整数;S是尾数)
类似于科学计数法,如:
l 1011101 B =2+7*0.1011101
l 101.1101 B=2+3*0.1011101
-
练习:(考题不多,近几年基本没有)
-
【X】补=10011000,其原码为( )
A、011001111 B、11101000 C、11100110 D、01100101
2、二进制数00101100和00010101的和是( )
A、 00101000 B、01000001 C、01000100 D、00111000
三、信息编码与存储
存储的基本知识,这些东西,也没啥说的,就是一种规定。至于为什么这么规定,当然是为了方便计算机进行计算。
所以我们现在就可以算家里100兆的网的速度,也可以算1024*768的一张真彩色图片的存储空间(考)。一般计算存储空间,我们用到的最小单位都是字节,它是计算机最小(基本)存取单位。
面向对象设计有句话,叫一切皆对象。佛家也有云,叫四大皆空。那么计算机领域也应该有句话,叫一切(信息)皆二进制。管你是图片,视频,文字还是什么花里胡哨的东西,要想在我计算机里处理、存储,都要编码为二进制,用的时候你们自己解码就是。
1、ASCII码(重要,常考)
计算机中用得最广泛的字符集及其编码,是ASCII码(AmericanStandard Code for Information Interchange,美国标准信息交换码,正是有它,我们才能从键盘上输入任何的英文字符、符号。
7位二进制数可以表示(2^7)=128种状态,每种状态都唯一地编为一个7位的二进制码,对应一个字符(或控制码),这些码可以排列成一个十进制序号0~127。所以,ASCII码是用七位二进制数进行编码的,可以表示128个字符。
第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)等;第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。(程序分析用得到)
注意:在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。
2、汉字编码(了解)
中华文化博大精深,汉字在编码也自然要费点事。比如输入时的拼音码,就是最简单的编码。既然不过不涉及二进制,我们就不深入研究了。但是存储就要给每个汉字来一个编码了,最常用的是国标码(GB2312),他给每个汉字编了两个字节的二进制。输出汉字显示,还要用到字型码,一般就要用一个汉字点阵,那一个字对应的二进制就比较长了……
3、图像编码
这里大家就要知道啥叫像素了,像素,就是显示屏上的最小色块点,一个像素一个颜色,组成了最终画面。一个像素色用多大空间存储,可以从计算机里看,一般常用32位真彩色或者更高。
-
练习:(题目简单,但常考)
1.24*24的字库中,汉字“一”和“编”的字模,点用字节数分别是()
2.已知小写字母m的十六进制ASCII码是6D,那么小写c的十六进制ASCII码码值是()
3. 2K的内存能存储()个汉字机内码。
4. 64KB容量的存储器,用十六进制表示,它的最大的地址码是()(提高组)
A、10000 B、FFFF C、1FFFF D、FFFFF
5. 一张容量为16GB的内存卡,大约能存储()张大小为2MB的图片?
说明:题目基本都是一本通真题,略有删减和改动。
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com