计算机中的信息不仅有数据。还有字符、命令,当中数据还有大与小、正数与负数之分。计算机是怎样用“0”或“1”。来表示这些信息的呢?
1.计算机中数的表示形式
在计算机中,仅仅有数码1和0两种不同的状态,对于一个数的正、负号,两种不同状态,约定正数的符号用0表示,负数的符号用1表示,将符号位放在数的最左边。比如:N1=+1011,N2=-1011。因为MCS—51为8位单片机。即信息是以8位为单位进行处理的,且每一个存贮单元仅仅能存贮—个8位的二进制数,称为一个字节,假设用一个字节(即8位二进制数)来表示上述两个符号数,它们在单片机中可分别表示为:00001011和10001011,当中最高位为符号值,其余位为数值位。
最高位为0表示是正数,最高位为1表示是负数。
这样的计算机用来表示数的形式叫机器数。而把相应于该机器数的算术值叫真值。
值得注意的是:机器数和真值的面向对象不同。机器数面向计算机,真值面向用户,机器数不同于真值。
但真值能够用机器数来表示。
机器数是计算机中表示数的基本方法,机器数通常有原码、反码和补码三种形式。
(1)原码表示方法
用8位二进制数表示数的原码时,最高位为数的符号位,其余7位为数值位。
比如:真值为+120和-120的原码形式
[+120]原=01111000
[-120]原=11111000
对于零,能够觉得它是正零,也能够觉得它是负零,所以零的原码有两种表示形式:
[+0]原=00000000
[-0]原=10000000
8位二进制数原码表示范围为:11111111~01111111。即-127~+127。
(2)反码表示方法
在反码表示方法中,正数的反码与原码同样。负数的反码由它相应原码除符号位之外。其余各位按位取反得到。比如:
[+120]反=[+120]原=01111000
[-120]反=10000111
零的反码有两种表示方式,即:
[+0]反=00000000
[-0]反=11111111
8位二进制数反码表示范围为:10000000~01111111,即-127~+127。
(3)补码表示方法
补码的概念:先以钟表对时为例。如果如今的标准时间为5点整,而有一仅仅表却已是7点,为了校准时间,能够採用两种方法:一是将时针退2格,即7-2=5。一是将时针向前拨10格。即7+10=12(自己主动丢失)+5,都能对准到5点。可见,减2和加10是等价的,我们把(+10)称为(-2)对12的补码。12为模,当数值大于模12时能够丢弃12。
在字长为8位的二进制数字系统中。模为28=256,先看看下例:
01000000 64 01000000 64
+11110110 +246 -00001010 -10
1 00110110 54 1 00l10110 54
由此可见。在字长为8位情况下(64-10)与(64+246)的结果是同样的,所以(-10)和246互为补数。
在补 码表示方法中,正数的补码与原码同样。负数的补码由它相应原码除符号位之外,其余各位按位取反且末位加一得到。比如:
[+120]补=[+120]原=01111000
如今我们看一看(-10)的补码11110110如何求得。
正数的补码表示方法与原码同样
负数的补码求法:
1)利用反码求补码:反码加1。
如:
[-10]原=100010l0
[-10]反=11110101
[-10]补=11110110
2)利用原码求补码(直接求补法):找出原码中数值位的最右边的一个“1”,将这个“1”以及这个“1”右边各位保持不变。而将这个“1”左边各位按位取反。但符号位不变。
如:
[-10]原=100010l0
[-10]补=11110110
採用补码表示数,可将减法运算转换成加法运算。在补码表示法中,零的补码仅仅有一种表示法,即 [+0]补=[-0]补=00000000。对于八位二进制数而言,补码能表示的数的范围为-128~+127。
【例1-10】已知X=+1010B,Y=-1010B,写出它们的原码、反码和补码形式。
[+1010B]原=00001010B [-1010B]原=10001010B
[+1010B]反=00001010B [-1010B]反=11110101B
[+1010B]补=00001010B [-1010B]补=11110110B
这些都非常easy,主要是考我们的细心程度,这两天体会到学习了自考看软考是轻松了。可是不得掉以轻心。自考考的是側重于记忆性的知识点多一些,而软考靠的是对问题的认识、分析、理解。对问题的认识我们要从根本上学习、理解,我们本该追本溯源。
对今后的学习相同也是,多问些为什么?往往能收到很多其它意想不到的说服自己的知识,那种感觉就是心里非常舒服、非常爽、也带劲。