分享

计算机系统知识(一)

 风雨电雷 2012-05-21
计算机系统知识(一)
2007-10-08 22:02
一、数制及其转换
     非十进制->十进制:整数部分和小数部分分别按基数展开求和。
    十进制->非十进制:整数部分:除以基数取余数倒排序。
                    小数部分:乘以基数取整数顺排序。
    十六进制 <-> 二进制:
      十六进制表示法是用16位二进制数字组成的,每4位二进制数字表示一位十六进制数,十六进制的数字表示从0-9,A,B,C,D,E,F共十六个字符。十六进制与二进制相互转换就是一位十六进制字符与四位二进制数字的相互转换过程。
      八进制 <-> 二进制:
       二进制向八进制转换的方法是从小数点开始分别向左右每3位二进制数编成一组,若不够3位,则小数点左侧的最高位和右侧的最低位用0补充。每一组用对应的八进制的数码表示即可;八进制向二进制转换的方法是从小数点开始,把每一位八进制的数码转换成对应的3位二进制即可。其小数点左侧的最高位或右侧。

二、各种编码的编码方式
   机器码:数值数据的机器内表示形式称为机器码,包括以下几种:
    原码:最高位为符号位,0表示正数,1表示负数,其余有效部分用二进制的绝对值表示。
    反码:原码的符号位不变,对其余逐位取反。
    补码:原码的符号位不变,其余位变反最低位加1。
    移码:移码与补码的符号位相反,符号位为0时为负值,1时为正值。

三、浮点数规格化处理  
     阶符、阶码、尾符和尾数的概念。
例题(源自2000年程序员上午试题)
     计算机中十六位浮点数的表示格式为:
0
1     3     
4
5                    15
阶   码
尾数(含尾符)
    某机器码为1110001010000000。
  若阶码为移码且尾数为反码,则其十进制真值为___1___;
  若阶码为移码且尾数为原码,则其十进制真值为___2___;
  若阶码为补码且尾数为反码,则其十进制真值为___3___;
  若阶码为补码且尾数为原码,则其十进制真值为___4___,将其规格化后的机器码为___5___。 
1:A. 0.078125       B. 20       C. 1.25        D. 20.969375
2:A. 0.078125       B. 20       C. 1.25        D. 20.969375
3:A. 0.078125       B. 20       C. 1.25        D. 20.969375
4:A. 0.078125       B. 20       C. 1.25        D. 20.969375
5:A. 1110001010000000               B. 11110101000000
       C. 1101010100000000              D. 11110001010000
    解答:1.B    2.B     3.A     4.A     5.C
    试题分析:
     本题的机器码为“1110   001010000000”,其中前4位和后12位都是可变的,采用不同的编码格式会得到原十进制的结果。该机器码的阶符为1,阶码为110,数符为0,尾数为01010000000。
第1题
     阶码是4位二进制整数移码,设真值为X,根据整数移码求法,由此求得阶码真值为6;如果尾数为反码,从符号为可判断尾数是正数,可求得尾数的真值为   (0.01010000000)2=(0.3125)10。根据浮点数定义,该机器码真值为0.3125*26=20
第2题
     阶码为移码,同上,真值为6。如果尾数是原码,从符号位可判断尾数是正数,根据小数原码定义,正小数的原码就是其本身,可求得尾数的真值为0.3125。这样该机器码真值也是20。
第3题
     阶码是4位二进制补码,从符号位判断为负数,设真值为X,根据负整数反码求法求得阶码的真值为-2。尾数为反码,同问题1一样求出尾数的真值为0.3125。这样,该机器码真值为0.3125*2-2=0.078125。
第4题
     阶码是补码,尾数是原码,可分别参照问题2和问题3求出阶码和尾数的真值分别为-2和0.3125,这样该机器码的真值也是0.3125*2-2=0.078125。
第5题
     这是对浮点数进行规格化处理。规定浮点数的尾数部分用纯小数形式表示,当尾数的值不为0时,其绝对值应大于或等于0.5,用二进制表示为0.1xxx…xx(x为0或1)。对于不符合这一规定的浮点数。可改变阶码的大小并同时左右移尾数的方法来满足这一规定。显然尾数0.01010000000不合要求,应左移1位,而阶码则应相应地减1,因此规格化处理后的阶码为1101,尾数为010100000000。
例题(源自2003年程序员上午试题)
    IEEE754标准规定:单精度浮点数的最高位为符号位,后面跟8位经偏移的阶码移码,偏移量为+127。尾数用原码表示,且把尾数规格化为1.xxx...x(x为0或1),并将1去掉,尾数用23位表示。根据该标准,十进制数+178.125的规格化表示形式为______。
A.0 10000110 01100100010000000000000
B.0 10000111 01100100010000000000000
C.1 10000100 01100100010000000000000
D.0 10000110 11100100010000000000000
       解答A
       试题分析:
      本题的考点是,数的规格化。即尾数小数点后第一个数位不为0的数。
首先将该十进制转换成二进制数,(+178.125)10=(10110010.001)2
然后对其进行规格化处理:
          (10110010.001)2=1.0110010001 27
    然后按照题目要求:
     1、最高位为符号位,数字为正数,所以符号位为0;
     2、阶码用移码表示,阶码为7,相应的二进制为00000111,然后再按照要求进行偏移量为+127,即还要把01111111加上,00000111+01111111=10000110;
     3、尾数用原码表示,规格化为1.0110010001;
     4、将1去除,用23位表示则从最右边补0。
综上所述,本题答案为A,做本题的时候需要考生仔细认真,而且对编码知识掌握扎实。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多