信息学奥赛辅导讲义第一篇:数值与编码

网友投稿 2018-09-11 23:53

计算机“数值”与“编码”

导读:

  • 进制转换

  • 数值编码(原码、反码、补码)

  • 信息编码与存储

计算机在本质上是一个“电气化”设备。计算机工作的过程,和电视机、收音机类似,无非就是线路板上的电线“通与不通电”,那么转化成数值,也只能是0和1,总不能来个“半通不通”的2吧。所以计算机为什么采用二进制这个事,很简单,因为他是一个“家用电器”,仅此而已。其实这事,你冯(诺依曼)大爷早就想好了,直到今天还是这样。当然,如果量子计算机能普及,就不是两种状态这么low了哈……

二进制虽是计算机的母语,如果人每次和计算机打交道都要写一堆0和1,看着都眼晕。如果改写成几位的八进制或十六进制便好多了。

那好,接下来就进入我们的第一个正题:进制转换。

一、   进制转换

  1. 1.    基础:十进制与二进制转换

  2. 1)     二转十:按权展开,十进求和。






如:(1011.01)2=(11.25)10

  • 十转二:除2取余,逆序输出






如:(89)10=(1011001)2

  1. 2.    八进制与二进制转换






如:(37.416)8=(11111.10000111)2

      二转八无非就是以小数点为界,三位三位转化即可,当然,这要求我们背过部分二进制的值。以下数值需要熟练记住。





  1. 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. 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

  1. 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