资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
1 1. 进制转换二进制(逢二进一)八进制(逢八进一)十进制(逢十进一)十六进制(逢十六进一)0000 0 0 0 0001 1 1 1 0010 2 2 2 0011 3 3 3 0100 4 4 4 0101 5 5 5 0110 6 6 6 0111 7 7 7 1000 10 8 8 1001 11 9 9 1010 12 10 A 1011 13 11 B 1100 14 12 C 1101 15 13 D 1110 16 14 E 1111 17 15 F 1.1 二进制(八进制、十六进制)转换成十进制【例 1】 二进制转十进制: (1011)2 = 1*23 + 0*22 + 1*21 + 1*20 = 8+2+1 = 11 【例 2】八进制转十进制: (362)8 = 3*82 + 6*81 + 2*80 = 192+48+2 = 242 【例 3】十六进制转十进制: (16A)16 = 1*162 + 6*16+ 10 = 256 + 96 + 10 = 362 思考:其它进制如何转换成十进制?1.2 二进制与十六进制转换【方法】二进制转十六进制,将二进制数从低位起,每四位划分成一组,各组分 别转换成十六进制数。 【例】求 (11010110)2=(?)16 思考: 1. 求(101100111)2=(?)16。 提示:将 101100111看成 1 0110 0111 。最高组不足四位,可在前面补0,变(1101 0110)2 = (D6)16D 6 2 成 0001 0110 0111 。2.求(5A3)16 = (?)2。 提示:分别将每个十六进制数码转换成二进制。5(0101),A(1010),3(0011), 连起来即 010110100011 ,所以 (5A3)16 = (0101 1010 0011)2 = (10110100011)23.如何进行二进制与八进制转换?1.3 十进制转换成二进制(八进制、十六进制)【方法】通过用目标基数作长除法;从最低位起列出余数“数字”。 【例 1】十进制转二进制,求 (23)10 = (?)2 23 / 2 = 11 余 1 11 / 2 = 5 余 1 5 / 2 = 2 余 1 2 / 2 = 1 余 0 1 / 2 = 0 余 1 = (10111)2直到商为 0 ,结束【例 2】 十进制转十六进制,求 (95)10 = (?)16 95 / 16 = 5 余15 (F) 5 / 16 = 0 余5 = (5F)16 思考:如何将十进制转换成其它进制?2. 计算机编码一个八位二进制数可以表示成十进制数:0255(从 00000000 到 11111111 ) 。因此,在计算机中,可以用一个字节(八位二进制数)表示256 个无符号整数( 0255) 。问题:在日常生活中,负数可以在数值最前方加上符号“-” 。那么,在计算机中如何存储负数?原码将最高位作为符号位,其余各位代表数值本身的绝对值(以二进制表示)。为了简单起见,我们采用一个字节举例。+7 的原码为:00000111 -7 的原码为:10000111 采用原码,一个字节可以表示的数值范围为-127127 问题:+0 的原码为:00000000 -0 的原码为:10000000 显然,0 和 -0 表示的是同一个数0,而在内存中却有两个不同的表示(00000000 或10000000)。也就是说, 0 的表示不唯一,这不适合于计算机的运算。反码一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,其余各位3 是对该数的绝对值的原码取反(1 变 0,0 变 1) 。同样,我们采用一个字节举例。+7 的反码为:00000111 -7 的反码为:11111000 (解释: -7 是负数,所以最高位符号位为1。剩下七位二进制数表示 7,为 0000111,将各位取反,得到1111000。所以合起来为11111000)问题:+0 的反码为:00000000 -0 的反码为:11111111 同样,反码对于0 的表示也不是唯一的,因此也不适用于计算机运算。补码一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,则符号位为1,其余各位取该数的反码,然后整个数加1。下面采用一个字节举例。+7 的补码为:00000111 -7 的补码为:(1) 求反码,得到11111000 (2) 反码 +1,得到11111001 又例如,+37 的补码为:00100101 -37 的补码为:(1) 求反码,得到11011010 (2) 反码 +1, 得到 11011011 +0 的补码为:00000000 -0 的补码为:(1) 求反码,得到11111111 (2) 反码 +1,得到1 00000000。其中进位1 被丢弃 (因为只有八位二进制数) ,所以得到补码为00000000 可见, +0 与-0 的补码均为00000000。在计算机系统中,数值采用补码存储。【补码与十进制转换】如果补码最高位为0,则直接将该二进制补码转换成十进制。如果最高位为 1,则:(1) 先对各位取反;(2) 将其加 1;(3) 转化成十进制数,再加上负号;【例 1】 :求补码11011011 所表示的数值。(1) 将 11011011 各位取反,得00100100;(2) 将 00100100 加 1,得到 00100101;(3) 转化成十进制数,得到37,加上负号,变成-37;【例 2】 :求补码10000000 所表示的数值。(1) 将 10000000 各位取反,得01111111;(2) 将 01111111加 1,得到 10000000;(3) 转化成十进制数,得到128,加上负号,变成-128 一个八位二进制补码可表示成十进制的范围为-128127。数值补码数值补码4 -128 10000000 -1 11111111 -127 10000001 0 00000000 -126 10000010 1 00000001 -125 10000011 ,127 01111111 为什么负数采用补码表示法?主要目的:优化加法与减法运算。加减时不必考虑符号位,与数值位同样参与运算【例 1】 :计算 7-3。7 的补码是00000111 -3 的补码是11111101 进行加法时,0 0 0 0 0 1 1 1 + 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 0 0 进位 1 舍弃,剩下八位补码为00000100,转换成十进制,即为4。【例 2】 :计算 -14+9。-14 的补码是11110010 9 的补码是00001001 1 1 1 1 0 0 1 0 + 0 0 0 0 1 0 0 1 1 1 1 1 1 0 1 1 结果是八位补码11111011,转换成十进制,即为-5。【例 3】 :计算 95+80,127+1,-128+1 95 的补码是01011111 80 的补码是01010000 0 1 0 1 1 1 1 1 + 0 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 结果是八位补码10101111, (10101111)补转成十进制,即为-81。思考 :数学上95+80=175,为什么采用补码表示后计算结果为-81 呢?(提示:一个八位二进制数表示的有符号整数范围为-128127 ,而上述结果175 已经超出该范围。)留意到-81+256=175 。不妨再计算127+1(结果为 -128) , -128-1(结果为127) 。从中,我们得到什么规律?详细内容,请参考教材计算机组成原理。3. ASCII 码(摘录至 http:/baike.baidu.com/view/15482.htm, http:/zh.wikipedia.org/zh-cn/ASCII%E7%A0%81) 在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算 机用高电平和低电平分别表示1 和 0) 。例如,像 a、b、c、d 这样的 52 个字母5 (包括大写)、以及 0、1、2 等数字还有一些常用的符号(例如*、#、等)在 计算机中存储时也要使用二进制数来表示。那么,具体用哪个数字表示哪个符 号?当然每个人都可以约定自己的一套规则(这就叫编码)。但是,如果大家要 想互相通讯而不造成混乱, 那么,大家就必须使用相同的编码规则。于是美国有 关的标准化组织就出台了所谓的ASCII(American Standard Code for Information Interchange) 编码,统一规定了上述常用符号用哪个二进制数来表示。 ASCII 码表控制字符6 可显示字符
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号