首页 > 技术文章 > 第二次课,课后实验报告

520520520zl 2019-09-19 14:58 原文

动手动脑一:分别给程序中的s和t赋值,然后再判断两者是否相等,再定义一个U,赋值为small,再判断其是否和S相等,并输出所有的元素。

 

 

 动手动脑二:

在计算机内,定点数有3种表示法:原码、反码和补码。

反码:

        正数:正数的反码与原码相同。

        负数:负数的反码,符号位为“1”,数值部分按位取反。 例如: 符号位 数值位

        [+7]反= 0 0000111 B

        [-7]反= 1 1111000 B

        注意:1. 数0的反码也有两种形式,即

                       [+0]反=00000000B

                       [- 0]反=11111111B

                  2. 8位二进制反码的表示范围:-127~+127

 原码:在数值前直接加一符号位的表示法。

           例如: 符号位 数值位

           [+7]原= 0 0000111 B

           [-7]原= 1 0000111 B

           注意:a. 数0的原码有两种形式:[+0]原=00000000B [ -0]原=10000000B

                     b. 8位二进制原码的表示范围:-127~+127

补码:

        正数:正数的补码和原码相同。

        负数:负数的补码则是符号位为“1”。并且,这个“1”既是符号位,也是数值位。数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。

        例如: 符号位 数值位

        [+7]补= 0 0000111 B

        [-7]补= 1 1111001 B

        补码在微型机中是一种重要的编码形式,请注意:

                    a. 采用补码后,可以方便地将减法运算转化成加法运算,运算过程得到简化。 正数的补码即是它所表示的数的 真值,而负数的补码的数值部分却不是它所表示的数的真值。采用补码进行运算,所得结果仍为补码。

                    b. 与原码、反码不同,数值0的补码只有一个,即 补=00000000B。

                    c. 若字长为8位,则补码所表示的范围为-128~+127;进行补码运算时,应注意所得结果不应超过补码所能表示数的范围。

验证,java中数的类型

package kehou;



 public class Bit {
     public static void main(String[] args) {
     int a=-13;
     System.out.println(a>>1);
 
     }
 
 }

 

A:若用原码表示。-13的机器数表示为[10001101]原,右移后表示为[11000110],十进制为-70,与正解-7不一样。所以不是用原码表示。

 

 B:若用反码表示。-13的机器数表示为[11110010]反,右移后表示为[11111101]反,转换成原码为[10000010]原,十进制为-2,与正解-7不一样。所以不是用反码表示。

C:若用补码表示。-13的机器数表示为[11110010]补,右移后表示为[11111110]补,转换成补码为[111111001]反,再转换成原码为[100000111],十进制为-7,与正解-7一致。所以Java中的数是用原码表示的。

  综上,Java中的数是用补码表示的.

动手动脑三:

package kehou;



 public class Bit {
     int a=2;
    public static void main(String[] args)
    {int a=22;
    System.out.println(a);
    }
 }

 

 由图可知,同名变量存在时,遵循着全局变量<局部变量的原则。

动手动脑四:

package kehou;



public class TestDouble {

    public static void main(String args[]) {
        System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
        System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
        System.out.println("4.015 * 100 = " + (4.015 * 100));
        System.out.println("123.3 / 100 = " + (123.3 / 100));
    }
}

 

结论: 使用double类型的数值进行计算,其结果是不精确的。

动手动脑五:

package kehou;



public class Bit {

    public static void main(String args[]) {
        int x=100;
           int y=200;
           System.out.println("x+y="+x+y);
           System.out.println(x+y+"+x+y");
    }
}

 

 结论:+号在java中会将+号前面的进行求和,后面的则只会单独的作为一个链接的符号。

推荐阅读