计算机数据表示

目录

  • 1.数制及其转换
    • 1.1常用数制
    • 1.2数制之间的转换
      • (1)十进制转其他进制
      • (2)其他进制转十进制
      • (3)2,8,16进制的转换
  • 2.计算机中的数值编码
    • 2.1原码,反码,补码
    • 2.2原码与补码的关系:
    • 2.3补码加减法
  • 3.计算机中的字符编码
    • 3.1BCD码
      • (1)压缩BCD码
      • (2)非压缩BCD码
    • 3.2ASCII码
    • 3.3Unicode


1.数制及其转换

1.1常用数制

(1)十进制数(Decimal):人类习惯的数字,数码为0~9;
(2)二进制数(Binary):由于计算机只能识别0和1,故计算机中的数据采用二进制表示;
(3)十六进制数(Hexadecimal):由于二进制数较长,难以辨别,故采用四位二进制数表示一位十六进制数,数码为0~9和A ~F(数据的地址通常显示为16进制)。

1.2数制之间的转换

(1)十进制转其他进制

[1] 整数部分: 除基取余(辗转相除),用当前十进制数值一直除以目标进制的基数,直到结果为0,再将余数路径上最后一个作为最低位开始向左(高位)扩展。
[2] 小数部分: 乘基取整,与整数部分操作相反,用当前十进制小数乘以基数,每次取出整数部分,剩余部分继续乘,直到小数部分为0(有时永远取不到就保留几位小数,损失精度),然后将整数路径上第一个作为最高位开始向右(低位)扩展。

(2)其他进制转十进制

较简单的通用方法:位权法:即各位位权乘以该位数值后累加

(3)2,8,16进制的转换

由于3位2进制数表示一个8进制数,4位二进制数表示一位16进制数,故三者存在一种天然的转化关系。
整数部分从右往左,每3位2进制数组成1位8进制数,每4位2进制数组成一位16进制数,不足补0;
小数部分从左往右,不足补0。


2.计算机中的数值编码

2.1原码,反码,补码

由于计算机以字节为一个基本存储单位,故常以8个二进制位为单位。
(1)原码:最高位为符号位(0正1负),余下7位为正常二进制数值表示。(故范围为-127 [11111111] ~ +127 [01111111])
(2)反码:原码各位取反(0变1,1变0)。
(范围:-127~127)
(3)补码: 在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。(-128~127)
(PS:最小为什么是-128?)
看到一种比较好的解释:在补码时:由于+0和-0都表示0,故规定0由+0表示,-0则用来表示-128(10000000),故-128是一个规定值。

2.2原码与补码的关系:

对于正数:原码反码补码都相同。
对于负数:则遵循除符号位按位取反再加1的原则。
PS:负数补码的补码即为原码(即为补码按原转换规则再操作一次)
计算机数据表示_第1张图片

2.3补码加减法

[X+Y]补=[X]补+[Y]补
[X-Y]补=[X]补-[Y]补=[X]补+[-Y]补


3.计算机中的字符编码

计算机中各种字符需要用若干二进制码的组合表示,故有字符的二进制编码。

3.1BCD码

BCD(Binary Coded Decimal)二进制编码的十进制数,最常用的是8421BCD码(操作简单,跟10进制数的二进制表示一一对应)。

(1)压缩BCD码

一个字节表达两位BCD码(一个字节为8位,即用4位表达一个BCD码,这其实就够了)

(2)非压缩BCD码

将二进制数的一个字节(8位)的高四位设置为0,仅用到第四位表示一个BCD码(会浪费一半的空间)。

举例:
十进制真值87用压缩BCD码和非压缩BCD码表示分别为:
压缩BCD码:1000 0111
非压缩BCD码:00001000 00000111

3.2ASCII码

ASCII(American Standard Code for Information Interchange),标准的ASCII用7位二进制编码,故有2^7=128个;而计算机的一个存储单位为8位,故其最高位通常作为0(通信时,其作为奇偶校验码),为适应更多字符需求还有扩展ASCII。

3.3Unicode

Unicode使用16位编码,使得能对世界上大多数字符编码,同时兼容了ASCII,并提供了扩展能力(ASCII的升级版)。

你可能感兴趣的:(汇编语言程序设计)