• 动脑动手+课后试验性问题


    动脑动手:

    1、源程序代码:

    运行结果:

     2、

    (1)原码:用两个字节(byte,1字节=8位(bite)),16位表示的二进制整数。

    如0的原码:0(或1)000 0000 0000 0000
    正整数的原码(如1):0000 0000 0000 0001
    负整数的原码(如-1):1000 0000 0000 0001
    正整数的原码,最高位是0,负整数的原码最高位是1(计算机中最高位0表示正,1表示-),除最高位外其余各位表示这个整数的绝对值即可;
    (2)反码:正整数的反码=原码
    负整数的最高位不变还是1,其它位取反(0变1,1变0)就得到负整数的反码了,如-1的反码就是:
    1111 1111 1111 1110

    (3)补码,补码是cpu内部用来计算数据的:

    正整数的补码=原码=反码;
    将负整数的原码取它的反码,将它的补码加一就得到负整数的补码了。
    如数-1:1000 0000 0000 0001
    先取反码得:1111 1111 1111 1110
    将反码加1就得到补码:1111 1111 1111 1111

    注:计算机内部存储的数都是二进制数的补码形式

     

    由上述程序验证可以得知,程序结果为0,而在二进制中00000001+10000001=10000010,换算成二进制结果为-2,显然java中的数值不是由原码储存的

     同理,在使用反码表示时,也会出现同样的问题: (00000001) 反+ (11111110)反 = (11111111)反 = ( -0 )

     而在补码中这没有这个问题:(00000001)补 + (11111111)补 = (00000000)补 = ( 0 )

     所以在java中,数值是由补码表示的。

    3、源程序代码:

     运行结果:

     由此可知,每个变量都有一个有效区域,即定义的那片区域,出了这个区域,变量将不再有效(全局变量除外)。

    4、源程序代码:

     运行结果:

    第一句输出中“+”连接字面量,计算结果是将X和Y将两数据连接。

    语句二输出中“+”是运算符,计算结果是对X和Y求和。

    5、为什么double类型的数值进行运算得不到“数学上精确”的结果?

    float 和double类型主要是为科学计算和工程计算而设计的,他们执行二进制浮点运算,这两种类型在计算机中的储存分为三部分:符号位、指数为、尾数部分。数据以二进制存储在计算机时,会出现无线循环系列,在数据转化中会出现错误。十进制不能准确的表示1/3,同样二进制不能精确的表示1/10。

    动手实验:

    1、源程序代码:

     运行结果:

    2.Addtion

    源程序代码:

    运行过程及结果:

    3、BigDecimal

    源程序代码:

     运行结果:

  • 相关阅读:
    关于Oracle过程,函数的经典例子及解析
    describeType的使用
    Flash Pro CS5无法跳过注册Adobe ID的问题
    DOM的滚动
    Flex的LogLogger类
    浏览器无法打开Google服务
    as3中颜色矩阵滤镜ColorMatrixFilter的使用
    仿Google+相册的动画
    Flex中ModuleManager的一个bug
    有序的组合
  • 原文地址:https://www.cnblogs.com/marr/p/13765636.html
Copyright © 2020-2023  润新知