• Java课后总结原码、补码、反码


    1.原码、补码、反码的定义和表示方法。

       数在计算机中是以二进制形式表示的。 数分为有符号数和无符号数。 原码、反码、补码都是有符号定点数的表示方法。 一个有符号定点数的最高位为符号位,0是正,1是副

       原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.,原码就是这个数本身的二进制形式。 原码是人脑最容易理解和计算的表示方式。

                例如:如果是8位二进制:

                                                   [+1]原 = 0000 0001      二进制的首位是0,表示+,其余位数表示值;

                                                   [-1]原 = 1000 0001       二进制的首位是1,表示-,其余位数表示值;

      反码:正数的反码是其本身负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.如果一个反码表示的是负数,人脑无法直观的看出来它的数值.,通常要将其转换成原码再计算。

               例如:

                          [+1] = [00000001]原 = [00000001]反             正数的反码是其本身

                          [-1] = [10000001]原 = [11111110]反              负数反码,符号位不变,其余各个位取反。

     补码:正数的补码就是其本身负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

              例如:

                         [+1] = [00000001]原 = [00000001]反 = [00000001]补       正数的补码就是其本身

                        [-1] = [10000001]原 = [11111110]反 = [11111111]补         负数的补码在其反码的基础上加一  

    2.

         动手动脑1,检验EnumTest.java

    package text;
    
    
    public class EnumTest {
    
    	public static void main(String[] args) {
    		Size s=Size.SMALL;
    		Size t=Size.LARGE;
    		//s和t引用同一个对象?
    		System.out.println(s==t);  //
    		//是原始数据类型吗?
    		System.out.println(s.getClass().isPrimitive());
    		//从字符串中转换
    		Size u=Size.valueOf("SMALL");
    		System.out.println(s==u);  //true
    		//列出它的所有值
    		for(Size value:Size.values()){
    			System.out.println(value);
    		}
    	}
    
    }
     enum Size{SMALL,MEDIUM,LARGE};
    

      

     enum   Size 定义了一个Size枚举类型,并定义了三个变量SMALL,MEDIUM,LARGE,从运行结果可以看出,第一个输出false,证明s和t引用了不同对象,用了Size中的不同变量,第二个输出false,说明了枚举类型不是原始数据类型,第三个输出true,说明了将“SMALL”从字符串转化为枚举,且同s相等。最后输出枚举类型中的所有变量。在枚举类型中”==“的用法和equals()相同。

    2      动手动脑2 TestDouble.java

             

    package text;
    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类型的计算结果是不精确的。其原因是因为double类型数字在转换为二进制的时候,有些数字不能完全转换,只能无限接近于原本的值,这就导致了在后来的运算会出现不正确结果的情况。

    解决精度问题可以使用使用BigDecimal类,但在构建BigDecimal对象时应使用字符串而不是double数值。

    3动手动脑3

    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中输出用+号相连。

          

  • 相关阅读:
    m-n的随机整数 包括m n
    获取url参数 hash类型
    js 数组转带空格字符串
    产生n-m的随机数组
    js 判断android、IOS
    判断是否微信浏览器
    文本左右对齐方式css
    H5微信支付流程
    H5微信授权登录流程
    H5页面 input禁止弹出键盘
  • 原文地址:https://www.cnblogs.com/zwx655/p/11551353.html
Copyright © 2020-2023  润新知