计算机数据表示的相关知识
1.数制
1.1 数制的种类
单片机中编程中经常使用十进制、二进制、十六进制的数。
十进制数有十个基数(0,1,2,3,4,5,6,7,8,9),进制规则是:逢十进一。在程序编制中,在数的后面加一字母,用D(Decimal)或不带字母表示十进制数;
二进制数只有两个基数:0和1,进制规则是:逢二进一。在数的后面加字母B(Binary)表示二进制数;
十六进制有16个基数(0~9,A,B,C,D,E,F),进制规则是:逢十六进一。在数的后面加字母H(Hexadecimal)表示十六进制数。
计算机通过指令对数据进行处理,计算机仅能识别用二进制表示的数据。但二进制数据不便于阅读和记忆,所以在程序编写时,一般用十六进制来缩写。
1.2数制转换
(1)二进制数和十进制数的相互转换
①二进制转换为十进制一般采用按权展开后相加的方法。
二进制数只有0和1两个数码,任何二进制数都是由这两个数码组合而成,二进制数N的一般表示形式为:
式中为第i位数码,n为二进制数的位数,为该位的权值。
例如:将二进制数1 1011B用十进制表示。
1 1011B即为十进制数27。
② 十进制转换为二进制一般采用“除2取余法”。 “除2取余法”的法则是:连续用2去除需要转换的十进制数,然后按顺序将所得的余数排列,最后得到的余数排列在最高位,最先得到的排列在最低位。
例如:将十进制数25用二进制表示。
25的二进制表示为:1 1001B。
一般而言,熟记8位二进制各位的权值有助于快速计算数的二进制代码。
权值1286432168421例如:将十进制数123用二进制表示。
分析:由于~各位权值之和为127,且123 = 127 - 4 - 1,故去掉权值为4和1的位就可以得到123的二进制代码,即为0111 1010B。
又如:将十进制数68用8位二进制表示。
分析:由于位的权值为64,且68 = 64 + 4,故加上权值为4的位就可以得到68的二进制代码,即为0100 0100B。
(2)二进制数和十六进制数的相互转换
十六进制的数码有0、1、……9、A、B、C、D、E、F这16个数码,十六进制数N的一般表示形式为:
式中为第i位数码,n为十六进制数的位数,为该位的权值。
① 二进制转换为十六进制
将二进制数从最低位向左,每4位分为1组,最后一组若不足4位则在左侧添0补足,每组用用1位十六进制数表示。
例如:将11 1011 B转换为十六进制
② 十六进制转换为二进制
用4位二进制代替1位十六进制即可。
例如:将9B H转换为二进制
2.计算机中信息的表示方法
在计算机中数值、字符、颜色、声音、图象等信息均使用二进制数据来表示和处理。将若干个二进制数码按某种规律组合到一起形成代码,以表示特定的信息,这个过程就称为编码。下面将介绍最基本的数的编码和字符编码规则。
2.1 数据存储单位
按数据存储位数来分:
位(bit):一个二进制数中的1位,其值是1或0。
字节(byte):8位二进制数,是计算机中数据的基本单位。
字(word):16位二进制数,即2个字节。
双字(double word):32位二进制数,即4个字节
2.2 数的编码
对整数的编码可根据有无符号,将数分为无符号数和有符号数;对带小数点的数通常采用定点数和浮点数来表示。
1.无符号数
常见的无符号数编码有二进制编码和BCD码
(1)无符号数的二进制编码
无符号数的二进制编码的特点是码值与数值相等。
例如:将十进制数129进行二进制编码。
解: 129 =1000 0001B
一个n位二进制无符号数的表示范围是: ,所以8位二进制无符号数的表示范围是;16位二进制无符号数的表示范围是。
(2)二—十进制码(BCD码)
二—十进制码简称BCD码(Binary Coded Decimal)。常见的BCD码有8421码、余3码、2421码等。
8421 BCD码是最常用的一种BCD码,它是将十进制数的每个数字符号用4位二进制数码来表示,下表给出了8421码与十进制数的对照关系。
十进制数8421码00000100012001030011401005010160110701118100091001容易发现,8421 BCD码的特点就是每个代码的各位数值之和就是它所表示的十进制数。同时还应注意,8421 BCD码中不可能出现(1010,1011,1100,1101,1110,1111)。
任何一个十进制数转换成BCD码表示时,只需要把该十进制数的每位转换成相应的BCD码即可。例如:十进制数325的BCD码表示形式为0011 0010 0101。
2.有符号数:原码、反码、补码
计