JVM习题--二进制运算

来源:互联网 发布:淘宝联盟提现没反应 编辑:程序博客网 时间:2024/05/17 04:04
  1. 有关补码,简要阐述补码的好处。并计算给出 -99, -105, 205 整数的补码

    • 补码有以下两个特点:
      • 因为使用补码可以将符号位和其他位统一处理,同时,减法也可以按加法来处理,即如果是补码表示的数,不管是加减法都直接用加法运算即可实现。
      • 两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
    • 补码运算的好处:
      • 使符号位能与有效值部分一起参加运算,从而简化运算规则。从而可以简化运算器的结构,提高运算速度;(减法运算可以用加法运算表示出来。)
      • 加法运算比减法运算更易于实现。使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。
  2. 有关浮点数,根据IEEE745,计算1 10000010 00100000000000000000000 的单精度浮点的值,并给出计算过程。

    • s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm
      s:符号位
      eeeeeeee:指数位:e全0 尾数附加位为0 否则尾数附加位为1
      公式为:s*m*2^(e-127)
      • 第1位为符号位:0表示正数 1表示负数
      • 第2~9位表示指数位:10000010, 即为1*2^7 + 1*2^1 -127= 3
      • 第10~32位表示尾数位:1*2^0+0*2^-1 + 0*2^-2+1*2^-3 = 1.125
        计算结果为:-2^3*1.125=-9
  3. 写一个Java程序,将100.2转成IEEE745 二进制表示 ,给出程序和结果。
float f = -100.2f;        System.out.println(Integer.toBinaryString(Float.floatToIntBits(f)));

结果为:1 10000101 10010000110011001100110