计算机中数据的表示

数据的表示

1.各种数制

1-1 二进制

特点:逢二进一,有两个字符(0和1)
符号表示:字母B下标2

2的10次方 = 1024 它需要用11位二进制位来表示(包含符号位)

1-2 八进制

特点:逢八进一,有八个字符(0 ~ 7)
符号表示:字母O下标8

1-3 十进制

特点:逢十进一,有十个字符(0 ~ 9)
符号表示:字母D下标10

1-4 十六进制

特点:逢十六进一,有十六个字符(0 ~ 9,A ~ F)
符号表示:字母H下标16

十六进制按权展开:(5C)H => ((5*16)+12)D

1-5 R进制

特点: 一种可变的进制,逢R进一

2.数制间转换

2-1 R进制转十进制

定义:对于任何一个R进制数,它对应的十进制数值等于该数每一位数字的数码乘以该位的权数

权数:由 R的K次方 表示。

  1. 如果该数值位在小数点左边,K的值为 从小数点开始到该位的位数 -1 (1 = 1 x 10(1-1))
  2. 如果该数值位在小数点右边,K的值为负数,其绝对值是 从小数点开始到该位的位数 (0.1 = 1 x 10-1)

例如:
十进制数 1234.56 其数值计算可拆分为:
1234.56 = 1 x 103 + 2 x 102 + 3 x 101 + 4 x 100 + 5 x 10-1 + 6 x 10-2
.
二进制数 111 转换为十进制数过程为:
111(B) = 1 x 22 + 1 x 21 + 1 x 20 = 7(D)

2-2 十进制整数转R进制整数

除以R取余数法:用十进制整数除以R,记录余数,并用得到的商继续除以R,直到商为0为止。将每一步记录的余数倒序输出,即为十进制整数对应的R进制数。

例:
(94)10 转为 二进制:
94/2 = 47 余 0
47/2 = 23 余 1
23/2 = 11 余 1
11/2 = 5 余 1
5/2 = 2 余 1
2/2 = 1 余 0
1/2 余 1 (由于1/2商为0,所以为最后一步)
把余数从下往上倒序输出即为转换后的二进制整数
(94)10 = (1011110)2

2-3 十进制小数转R进制小数

乘R取整法:把十进制小数乘R,记录积的整数数值,并用小数部分继续乘R,直到积为1(不包含小数)为止。将每一步记录的整数部分正序输出,即为十进制小数对应的R进制小数。

此方法中的十进制小数指 个位及个位左边的位都为0 的小数,如果不为0,则小数点左边按整数方式计算,小数点右边按小数方式计算。

例:
(0.43)10 转为二进制小数:(假设要求小数点后取5位)
0.43 x 2 = 0.86 整数位为 0
0.86 x 2 = 1.72 整数位为 1
0.72 x 2 = 1.44 整数位为 1
0.44 x 2 = 0.88 整数位为 0
0.88 x 2 = 1.76 整数位为 1

从上往下正序输出即为转换后的二进制小数
(0.43)10 = (0.01101)2

2-4 二进制转八进制

每三位聚合法:从小数点开始,往前(或往后)每三位转换成对应的八进制数即可,不够三位的补0。

例:
(1 011.111 11)B = (13.76)O

2-5 二进制转十六进制

每四位聚合法:从小数点开始,往前(或往后)每四位转换为对应的十六进制数即可,不够四位的补0。

例:
(10 1011.1111 1)B = (2B.F8)H

3.数据的表示

原码、反码、补码、移码 都是二进制编码,以二进制为基础

3-1 原码

原码 = 1位符号位(正数为0,负数为1) + 真值(实际数值的绝对值)

例1:整数原码
(+0110)B 的原码为 (00000110)
(-0110)B 的原码为 (10000110)
例2:小数原码(取小数点右边的数值)
(+0.1011)B 的原码为 (01011)
(-0.1011)B 的原码为 (11011)

3-2 反码

正数的反码:与原码相同
负数的反码:原码的符号位不变,所有数值位取反

例1:整数反码
(+0110)B 的反码为 (00110)
(-0110)B 的反码为 (11001)
例2:小数反码(取小数点右边的数值)
(+0.1011)B 的反码为 (01011)
(-0.1011)B 的反码为 (10100)

3-3 补码

正数的补码:与反码(原码)相同
负数的补码:反码加1

例1:整数补码
(+0110)B 的补码为 (00110)
(-0110)B 的补码为 (11010)
例2:小数补码(取小数点右边的数值)
(+0.1011)B 的补码为 (01011)
(-0.1011)B 的补码为 (10101)

3-4 移码

补码的符号位取反

例:
(+1011)B 补码为 (01011) 移码为(11011)
(-1011)B 补码为(10101) 移码为(00101)

1.在补码和移码中,0有唯一的编码:
	补码中 +0-0 均为 0000 0000 
	移码中 +0-0 均为 1000 0000
2.在计算机中采用补码进行加减运算,其符号位和数值位一样参与运算,无须做特殊处理
3-5 数据的表示范围

n 为二进制码的总长度(包括符号位和数值位)

码制定点整数定点小数
原码-(2n-1 -1) ~ +(2n-1 -1)-(1-2-(n-1) ) ~ +(1-2-(n-1) )
反码-(2n-1 -1) ~ +(2n-1 -1)-(1-2-(n-1) ) ~ +(1-2-(n-1) )
补码-2n-1 ~ +(2n-1 -1)-1 ~ +(1-2-(n-1))
移码-2n-1 ~ +(2n-1 -1)-1 ~ +(1-2-(n-1))

当 n = 8 时:

  1. 定点整数补码中:-128的补码由人为规定: 1000 0000
  2. 定点小数补码中:-1 的补码由人为规定:1000 0000
    (因为补码、移码中,数值0有唯一的表示方式,所以多出的一个空位就用来扩展最小值)
3-6 二进制浮点数

浮点数表示[数符+-] [尾数] [阶符+-] [阶码] (例:0.1011 x 2010
特点

  1. 尾数的位数决定数的有效精度,位数越多精度越高
  2. 阶码的位数决定数的表示范围,位数越多范围越大

浮点数运算过程:
对阶 > 尾数计算 > 结果格式化
计算要点:

  1. 对阶时,小数向大数看齐(阶码低的向阶码高的靠拢,尾数右移)
  2. 对阶是通过较小数的尾数右移实现的

4.其他编码

2.5 浮点数编码

浮点数表示形式为:N = 2E * F (其中 E为阶码,F为尾数)
浮点数的二进制编码组成为:阶符(阶码的正负) + 阶码E的移码(纯整数) + 数符(数的正负) + 尾数F的补码(纯小数)

例:???
求 123D 的浮点数二进制表示:

  1. 先转为二进制:1111011B
  2. 分离尾数(纯小数)和阶码:0.1111011 x 27
  3. 算阶码的移码:7D的二进制移码为10111
  4. 算尾数的补码:0.1111011B 补码为 0.1111011
  5. 合成浮点数编码: 0 10111 0 1111011000

2.6 IEEE754编码(单精度)

IEEE754二进制编码组成为:符号位(1位) + 阶码的移码(8位) + 尾数的原码(23位)

总长32位,约定小数点左边隐含一位1,所以尾数的有效位为24位,即尾数的格式为 1.xxxxxxx…
特殊规定:在IEEE754标准中,单精度浮点数的移码并不是补码符号位取反,而是补码 + 127D

例:
将 176.0625D表示为符合IEEE754标准的单精度浮点数:

  1. 转二进制:176.0625D = 10110000.0001B
  2. 规格化处理:10110000.0001B = 1.01100000001 x 27
  3. 去掉小数点左边约定的1,并扩展成23位尾数:01100000001000000000000
  4. 求阶码的移码:7D 的移码为 10000110B
  5. 合成单精度IEEE754编码:0 10000110 01100000001000000000000

2.7 BCD码(跳过)

2.8 ASCII 编码

美国标准信息交换码,采用8位二进制编码(最高一位固定为0,有效位7位)
低四位用做行编码,高三位用做列编码

2.8 汉字编码

1.区位码

将国标码方案中的字符分区,然后用16进制数值来表示该字符的区位。
例:1303H 13为高位,03为低位

2.国标码

GB2312-80 长度为两个字节,每个字节的最高位都为0,因此可以表示的汉字数为16384个。
将区位码的低位和高位分别加十进制数32(即20H),便能得到国标码。

3.机内码

是计算机内部存储、处理、传输汉字的代码。无论使用哪儿种编码,进入计算机后都被转换为机内码。
将国标码高位和低位分别加128D(即80H)得到机内码。

3. 算数运算

3.1 二进制加法

例:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10(进位)
101 + 11 = 1000

3.2 二进制减法

0 - 0 = 0
1 - 0 = 1
0 - 1 = 01(借位)
1 - 1 = 0
101 - 11 = 10

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值