270 likes | 373 Views
计算机中的数据表示. 一、进位计数制 二、不同数制之间的转换 三、二进制的原码、反码和补码. 一、进位计数制. 十进制:. (256.73) 10 =2×10 2 +5×10 1 +6×10 0 +7×10 -1 +3×10 -2 =200+50+6+0.7+0.03 =256.73. 十进制数具有以下特点:. (1) 数字的个数等于基数 10 ,即 0 、 1 、 … 、 9 十 个数字。 (2) 最大的数字比基数小 1 ,采用逢 十 进一。
E N D
计算机中的数据表示 • 一、进位计数制 • 二、不同数制之间的转换 • 三、二进制的原码、反码和补码
一、进位计数制 十进制: (256.73)10=2×102+5×101+6×100+7×10-1+3×10-2 =200+50+6+0.7+0.03 =256.73 十进制数具有以下特点: (1)数字的个数等于基数10,即0、1、…、9十个数字。 (2)最大的数字比基数小1,采用逢十进一。 (3)每个数字符号都带有暗含的“权”,这个“权”是 10的幂次,“权”的大小与该数字离小数点的位数及 方向有关。
二进制: (100101)2=1×25+0×24+0×23+1×22+0×21+1×20 二进制数具有以下特点: (1)数字的个数等于基数2,即0、1二个数字。 (2)最大的数字比基数小1,采用逢二进一。 (3)每个数字符号都带有暗含的“权”,这个“权”是 2的幂次,“权”的大小与该数字离小数点的位数及 方向有关。
128瓦 64瓦 32瓦 16瓦 8瓦 4瓦 2瓦 1瓦 1 1 1 0 1 0 1 0 为什么不使用10进制来表示呢? 采用二进制表示的好处是: (1)物理上容易实现,可靠性强; (2)运算简单; (3)便于进行逻辑运算。
八进制数和十六进制数 八进制数762.16可以表示为: (762.16)8 =7×82+6×81+2×80+1×8-1+6×8-2 十六进制数 1BF3.A 可以分别表示为: (1BF3.A)16 = 1×163+11×162+15×161+3×160+10×16-1
十进制数 非十进制数 十进制数 非十进制数 二、不同进制数之间的转换 二、八、十六进制之间的转换
十进制数 非十进制数 十进制数 非十进制数 二、不同进制数之间的转换 二、八、十六进制之间的转换
二进制整数转换成十进制整数 转换方法就是将其定义式按“权”展开计算,其结果就是基数为10的数。 二进制数(1011.1) 2 转化为十进制数 (1011.1) 2 = 1×23+0×22 + 1×21 + 1 ×20 +1× 2-1 = 8 + 0 + 2 + 1 + 0.5 = (11.5)10
八、十六进制整数转换成十进制数 请同学计算下(205)8、(2AB3)16转化成十进制数是多少? 解: (1)(205)8=2×82+0×81+5×80 =128+0+3 =(133)10 (2)(2AB3)16 = 2×163+10×162+11×161+3×160 =8192+2560+176+3=(10931)10
十进制整数转换成二进制整数 十进制整数转换成二进制整数的转换方法是: “除以2倒取余数法” 例:十进制数13转化成二进制数 2 13 1 6 2 0 2 3 1 结果为:1101 2 1 1 0 直到商为零
与十进制数(75)10对应的二进制数是什么? 2 75 1 2 37 1 2 18 0 2 9 1 2 4 0 2 2 0 2 1 1 0 结果为:1001011
十进制小数转换成二进制小数 进位法:用十进制小数乘基数,当积为0或达到所要求 的精度时,取其整数部分由上而下排列。 示例: 0.625 ╳ 2 1.250 整数=1 ╳ 2 0.50 整数=0 ╳ 2 1.0整数=1 小数值=0 结果为:0.101 直到小数部分为0
[例] 与十进制数86.6875对应的二进制数是什么? 解:由上可知 (86)10=(1010110)2 由上可知 (0.6875)10=(0.1011)2 所以,(86.6875)10=(1010110.1011)2
十进制数转换成八进制数和十六进制数 与十进制数转换成二进制数相似,转换成八进制数时可以使用“除以8取余数法”和“乘以8取整数法”;转换成十六进制数时可以使用“除以16取余数法”和“乘以16取整数法”。
[例] 十进制数7155.625对应的十六进制数是什么? 解: 16 7155 余数 3 16 447 余数 15(F) 16 27 余数 11(B) 16 1 余数 1 0 则,(7155)10=(1BF3)16 0.625 × 16 10.000 整数部分 10(A) 则,(0.625)10=(0.A)16 (7155.625)10=(1BF3.A)16
二进制、八进制、十六进制数之间的相互转换 二进制数向八进制数转换时,应先将二进制数从小数点开始,分别向左和向右每三位二进制数划分为一组(如果位数不足三位可以补零)。然后按二进制数和八进制数的对应关系写出与每一组二进制数等值的八进制数及对应的小数点,就可以得到转换后的八进制数。 例: (100 110 110111 .010 1)2=( ? )8 100110 110 111 . 010 100 ( 4 6 6 7. 2 4 )8
二进制数向十六进制数转换时,应先将二进制数从小数点开始,分别向左和向右每四位二进制数划分为一组(如果位数不足四位可以补零)。然后按二进制数和十六进制数的对应关系写出与每一组二进制数等值的十六进制数及对应的小数点,就可以得到转换后的十六进制数。二进制数向十六进制数转换时,应先将二进制数从小数点开始,分别向左和向右每四位二进制数划分为一组(如果位数不足四位可以补零)。然后按二进制数和十六进制数的对应关系写出与每一组二进制数等值的十六进制数及对应的小数点,就可以得到转换后的十六进制数。 例: (1001 1011 0111. 0101)2=( ? )16 1001 1011 0111 . 0101 ( 9 B 7 . 5 )16
三、二进制的原码、反码和补码 • 数在计算机中的表示形式称为机器数。 • 机器数全用二进制表示。 • 为了计算和设计方便,计算机中采用补码表示数据,加法是基本的运算,减法操作由加补码实现。
三、二进制的原码、反码和补码 1.原码 计算机中通常用符号位表示符号。符号位一般占用二进制最高位, 用“0”表示正数,用“1”表示负数。 [例] 已知X1=1111,X2=-1111,求X1和X2的原码。 解:根据原码定义 [X1]原=00001111 [X2]原=10001111
2. 反码 • 正数的反码与其原码相同; • 负数的反码就是将除了符号位以外的每个二进制位求反。 [例] 已知X1=1111,X2=-1111,求X1和X2 反码。 解:根据反码定义 [X1]反=[X1]原=00001111 [X2]反=11110000
3.补码 正数的补码与其原码相同;负数的补码是其反码加1,简记为“求反后加1”。 [例] 已知X1=1111,X2=-1111,求X1和X2 的补码。 解:根据补码定义 [X1]补=[X1]原=00001111 [X2]补=11110001
0 1 1 0 0 1 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 0 0 1 77 原码 反码 补码 -77 原码 1 反码 1 补码
4. 利用补码做加、减法运算 对任意两个八位二进制机器数(整数)x,y有: [x+y]补=[x]补+[y]补 [x-y]补=[x+(-y)]补=[x]补+[-y]补 由此,加法的运算步骤是: (1)求出[x]补和[y]补; (2)求出[x]补+[y]补的值; (3)将上步求出的补码还原成原码,从而求出真值。
[例] 已知x=1010,y=10111,利用补码的计算分别求x+y和x-y的值。 解: [x+y]补=[x]补+[y]补 =00001010+00010111 =00100001 则[x+y]补=00100001 故x+y的真值是(100001)2,即(33)10。 [x-y]补=[x+(-y)]补=[x]补+[-y]补 =00001010+11101001 =11110011 则[x-y]原=10001101 故x-y的真值是(-1101)2,即(-13)10。
作业: 1.将十进制数60.125转换成各进制数。 2.将二进制数1011.11转换成各进制数。 3.已知x=(110110)2,y=(1011)2, 利用补码计算x+y和x-y。