今天我们来看看计算机中的信息是怎样表示和存储的。
信息的表示和存储
首先让我们来看看计算机中信息是以何种形态表示的
计算机中的信息都会被计算机转化为“0”和“1”的二进制形式。之所以会采用二进制表示的原因有以下几点:
(1)在物理层面上,原理简单,容易实现,而且可靠性高。
(2)以二进制形式进行运算会简化运算,且通用性很强。
(3)便于表示和进行逻辑运算。“0”和“1”与“假”和“真”相互吻合。
计算机中的数字系统
说起数字系统,我们最熟悉的就是十进制数字系统,十进制在日常生活中十分常用。在十进制中,数字符号有:0,1,2,3,4,5,6,7,8,9。逢十进位。
而在计算机中,我们却不使用十进制,而是使用二进制。而二进制中,数字符号有:0,1,逢二进位。
在数字系统中,用r个基本符号(0,1,2,···,r-1)表示数值,称其为r进制数,r称为该数的基数,而数制中每个位置对于的单位值称为位权。
以下是我们常用的几种数字系统:
我们再来看看各个进制之间的关系:
对于任意一个数而言,数的表示也可以使用位置表示法,各种进位计数制的权值正好是r的某次幂。因此,任何一种进位计数制表示的数都是可以写成一个多项式之和。
然后我们来了解一下进位计数制的转换
进位计数制的转换
1.十进制转换成r进制数
由于整数部分和小数部分的转换方法不同,将十进制数转换为r进制数时,可以分别按照整数部分和小数部分转换,然后将结果相加即可。
十进制整数转换成r进制数的方法是除r取余法:即将十进制整数不断除以r取余数,直到商为0,先得到的余数是a0,最后得到的余数是a(n-1),则a(n-1) a(n-2) … a(1) a(0)就是转换后的r进制数。其中括号内的为下标。
十进制小数转换成r进制数的方法是乘r取整数:即将十进制小数不断乘以r取整数,直到小数部分为0或达到要求的精度为止,先得到的整数是a(-1),自左向右排列,则a(-1) a(-2) …就是转换后的r进制小数。
2.r进制数转换成十进制数
将任意r进制数按照位权写成的多项式,各个数码乘以各自的权值且累加起来,就得到该r进制数对应的十进制数。
3.二、八、十六进制数相互转换
二进制数转换成八进制时,以小数点中心向左右两边分组,每3位为一组转换成相应的八进制数,两头不足3位用0补足。
二进制数转换成十六进制时,以小数点中心向左右两边分组,每4位为一组转换成相应的十六进制数,两头不足4位用0补足。
八进制数转换成十六进制或十六进制转换成八进制时,可以借助于二进制。
最后我们来看一下计算机中数的表示
整数在计算机中的表示
一个数在计算机中的表示形式称为机器数。
一个有符号数的组成是:符号位(首位)+数值位
一个无符号数的组成是:数值位
而在计算机中,当一个带有符号位的数(带符号数的首位是0为正数,首位是1是负数)参与运算时,又是会产生错误的结果。例如00000101+10000101的结果并不是0.如果在运算时另考虑符号位计算的话,会增加计算机的运算难度,于是有了原码、反码和补码。
我们先来看看原码:
原码:整数X的原码是符号位0表示正,1表示负,数值位是X绝对值表示的二进制数,记为(X)原。假如n为字长,原码表示数的范围就是-(2n-1-1)~2n-1-1
原码表示法编码简单,但是缺点就是运算时要单独考虑符号位和判别0,增加了运算规则的复杂性。
反码:整数X的反码是:对于正数,反码就是原码;对于负数,符号位为1,数值位为原码中数值位按位取反。X的反码记为(X)反。
对于计算机而言,反码运算也是很有难度的,因此很少使用,一般用来求补码。
补码:整数X的补码是:对于正数,补码与原码、反码相同;对于负数,符号位为1,其数值位为反码加1.X的补码记为(X)补
补码的实质就是对负数的表示进行不同的编码,从而方便地实现了正负数的加法运算且规则简单。在数的有效表示范围内,符号位如同数值位一样参与运算,也允许最高位的进位(被丢弃)。
注意:
机器数、原码、反码和补码等编码都是需要在特定的字长下讨论的。
本篇到此结束,希望能对大家的学习有所帮助,如有错误还请指出,谢谢大家浏览。