数据的表示及运算

数制转换

数值计算

转换为十进制:

例,二进制10100.01 B:
10100.01B = 1×24 + 0×23 + 1×22 + 0×21 + 0×20 + 1×2-1 + 0×2-2 = 20.5
例如十六进制数8AB H:
8AB H = 8×162 + A×161 + B×160 = 2219

十进制转化为R进制:

二进制例子

十进制小数转化为R进制:

二进制为例

二进制转化为八进制十六进制:

例子

二进制编码

定点整数,定点小数:

源码:

符号位:0代表正,1代表负
[+0]=00000000
[-0]=10000000

反码:

正数:等于源码
负数:源码符号位不变,数值位取反
[+0]=00000000
[-0]=11111111

补码:

正数:等于源码
负数:等于反码+1
[+0]=[-0]=00000000

移码:

符号位:0代表负,1代表正
移码和补码符号位相反,只用于整数

浮点数编码

二进制数N用科学计数法表示为:N=2E×F,其中E称为阶码,F称为尾数。利用这种方法表示的数称为浮点数,其编码格式如下:

在这里插入图片描述

123D = 1111011B=0.1111011000B×27
[7]=10111
[0.1111011]=0.1111011000
得: 0 10111 0 1111011000

IEEE754工业标准

定义:什么是IEEE754

浮点数在C/C++中对应float和double类型,我们有必要知道浮点数在计算机中实际存储的内容。

IEEE754标准中规定float单精度浮点数在机器中表示用 1 位表示数字的符号,用 8 位来表示指数,用23位来表示尾数,即小数部分。对于double双精度浮点数,用 1 位表示符号,用 11 位表示指数,52 位表示尾数,其中指数域称为阶码。

IEEE754规定:

  1. 单精度浮点数字长32位,尾数长度23,指数长度8,指数偏移量127;双精度浮点数字长64位,尾数长度52,指数长度11,指数偏移量1023;
  2. 约定小数点左边隐含有一位,通常这位数是1,所以上述单精度尾数长度实际为24(默认省略小数点左边的1则为23),双精度尾数长度实际为53(默认省略小数点左边的1则问53);

下面讲述使用IEEE754标准表示浮点数:

176.0625表示为单精度浮点数:
1).先将176.0625转换为二进制数
小数点前整数转换为二进制:10110000
小数点后:小数部分乘以2,取整数部分,直至乘积小数部分为0
0.0625 * 2 = 0.125 整数为0
0.125 * 2 = 0.25 整数为0
0.25* 2 = 0.50 整数为0
0.5* 2 = 1.0 整数为1,小数部分为0,结束
小数点后的小数位转换为二进制:0001
故176.0625转换为二进制为:10110000.0001
2).IEEE754约定小数点左边隐含有一位,通常这位数是1,所以
10110000.0001=1.01100000001 × 27(小数点向左偏移7位);
IEEE754约定单精度指数偏移量为127,所以176.0625使用IEEE754标准表示时,指数偏移量为 7+127=134 ,即:10000110
IEEE754约定单精度尾数长度为23,所以176.0625使用IEEE754标准表示时,尾数为:01100000001000000000000
176.0625>0,即为整数,所以符号位为0
3)由上得出:176.0625使用IEEE754规格化后的表示为:0 10000110 01100000001000000000000

字符编码

BCD码

数值、文字、英文字母和汉字都被认为是字符,将其转换成对应的二进制表示称为字符编码。
用四位二进制代码来表示一位十进制数,称为二—十进制编码,简称BCD码。根据代码的每一位是否有权值可分为有权码和无权码两类,应用最多的是8421码,无权码用得较多的是余三码和格雷码。这些编码跟十进制数对应的关系如下:
在这里插入图片描述

BCD码加法修正

当两8421BCD码相加之和大于1001且向高位有进位时,必须进行加6修正
在这里插入图片描述
使用余3码进行计算时,从最高位产生的进位是真正的进位,对每4位的结果,如果是小于等于9的,则减3,如果大于9,则加3。如:9+8,余三码表示为:1100+1011=0001 0111由于0001、0111都小于9所以都加3,进行调整得:0100 1010;又如:2+3,余三码表示为:0101+0110=1011由于1011大于9所以减去3,进行调整得:1000。

ASCLL编码

ASCII码(American Standard Code for Information Interchange)是美国标准信息交换码的简称,已被ISO采纳。其采用7位二进制编码(其实是8为,最高一位固定为0):低四位用做行编码,高三位用做列编码,比如,"a"对应的ASCII码为110 0001,在ASCII表中的第0001行和第110的交叉处便可查到字母"a”。
在这里插入图片描述

汉子编码

  1. 区位码:区位码将GB2321-80方案中的字符按其位置划分为94个区,每个区94个字符,区的编号是从1~94,区内字符编号也是从1~94,区号和区内编号各占一个字节。比如“常"字在第19区中排第3,各化成十六进制为13H、03H,因此其区位码为1303H。
  2. 国标码:国标码又称为汉字交换码,就是国家标准局规定的GB2312—80信息交换用汉字编码集,在计算机之间交换信息用。用两个字节来表示,每个字节的最高位均为0,因此可以表示的汉字数为214=16384个。将汉字区位码的高位字节、低位字节各加十进制数32(即20H),便得到国标码。例如“常”字的国标码为3323H。
  3. 机内码:汉字机内码是计算机内部存储、处理、传输汉字用的代码,又称汉字内部码、汉字内码。无论使用何种输入码,进入计算机后就立即被转换为机内码。规则是将国标码的高位字节、低位字节各自加上128D或80H。这样做的目的是使汉字内码区别于西文的ASCIl,因为每个西文字母的ASCII的高位均为0,而汉字内码的每个字节的高位均为1。“大"的国标码为3473H,其机内码就是B4F3H。

算数运算

二进制运算规则

加法

0+0=0,1+0=1,0+1=1,1+1=0(有进位),如101+11=1000。

减法

0-0=0,1-0=1,0-1=1(有借位),1-1=0,如101-11=10。

乘法

0×0=0,1×0=0,0×1=0,1×1=1
例如:
在这里插入图片描述

除法

乘法的逆运算
在这里插入图片描述

源码、补码运算

在计算机内,通常只设置加法器,减法运算通过转换为加法运算来实现

源码

当两个符号相同的原码数相加时,只须将数值部分直接相加,运算结果的符号不变。若两符号相异,则先比较两个数的绝对值的大小,然后用较大的绝对值减去小的绝对值得到运算结果的数值部分,运算结果的符号为绝对值较大的那个数的符号

补码的加法

[X+Y]=[X]+[Y]
例如:X= -0.010 , Y= -0.011 计算X+Y;
[X+Y]=[X]+[Y]=1110+1101=11011
舍弃最左边的进位得[X+Y]=1011
则 X-Y = -0.101

补码减法

[X-Y]=[X][-Y]
由[Y]求[-Y]的方法是将[Y]的各位取反(包括符号位),然后在末尾+1.
例如:X=0.101 , Y=0.010 , 计算X-Y;
[Y]=0010 , [-Y]=1110
[X-Y]=[X]+[-Y]=0101+1110=10011
舍去最左边的进位得[X-Y]=0011
则X-Y=0.011

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值