• 计算机基础(原码补码 负号运算)


    package javabasis;
    
    import org.junit.Test;
    
    public class NO1Symbols {
    
        /*
        * 首先介绍  原码 反码 补码 移码的计算 及使用
        *
        *
        * 例:
        *   -15
        *
        *   每次除以2取余数
        *
        *   15 2 7 1
        *   7  2 3 1
        *   3  2 1 1
        *   1 2  0 1
        *
        *   补齐8位   第一位为符号位,0正数,1负数
        *   原码: 10001111  (原码还原  1*2^0 + 1*2^1 + 1*2^2 + 1*2^3 + 0*2^4 = 1 + 2 + 4 + 8 + 0 = 15 符号位为负数)
        *   反码: 11110000  (除了符号位,按位取反)
        *   补码: 11110001  (反码+1)
        *   移码: 01110001  (符号位取反)  一般用于比较大小
        *
        *   原码+补码=0   一般进行减法计算都是加上减数的补码.
        * */
    
    
        /*
        * 一些运算符的使用
        * >> <<
        * >>>
        * &&
        * &
        * ||
        * |
        *
        * */
    
        @Test
        public void test() {
            /*
            * >> << 转化为2进制后,整体进行移位  00000010(2) 00000100(4),  即为翻倍或者折半
            * */
    
            int num1 = 4;
            System.out.println(num1 >> 1); //2
            System.out.println(num1 >> 2); //1
            System.out.println(num1 << 2); //16
    
            int num2 = -4;
            System.out.println(num2 >> 1); //-2
            System.out.println(num2 >> 2); //-1
            System.out.println(num2 << 2); //-16
    
            /*
            * >>>   没有<<<
            * 作用是忽视符号进行移位
            *
            * 对于整体进行扩展,负数补1 正数补0
            * */
    
            int num3 = 4;
            System.out.println(num3 >>> 1); //2
            System.out.println(num3 >>> 2); //1
    //        System.out.println(num3<<<2); 直接报语法错误
    
            int num4 = -4;
            System.out.println(num4 >>> 1); //2147483646
            System.out.println(num4 >>> 2); //1073741823
    
    
            /*
            *
            * && &   区别,是否继续进行后续的运算
            *
            * || |
            * */
    
            boolean b1 = true;
            boolean b2 = true;
    
    /*        boolean result1 = (b1 = (1 == 2)) && (b2 = (1 == 2));
            System.out.println(b1 + " " + b2 + " " + result1);
            //false true false  由于(b1 = (1 == 2))先进行运算,已经判断false,(b2 = (1 == 2));不会继续运算*/
    
    /*        boolean result1 = (b1 = (1 == 2)) & (b2 = (1 == 2));
            System.out.println(b1 + " " + b2 + " " + result1);
            //false false false  前后都会进行运算*/
    
    
    /*        boolean result1 = (b1 = (1 == 1)) || (b2 = (1 == 2));
            System.out.println(b1 + " " + b2 + " " + result1);
            //true true true  由于(b1 = (1 == 1))先进行运算,已经判断false,(b2 = (1 == 2));不会继续运算*/
    
    /*        boolean result1 = (b1 = (1 == 1)) | (b2 = (1 == 2));
            System.out.println(b1 + " " + b2 + " " + result1);
            //true false true  前后都会运算*/
    
        }
    
    }
    
    
  • 相关阅读:
    java操作练习
    java认知
    java了解
    抽象类及抽象类
    杨辉三角实例菱形实例
    案例分析之运行顺序
    Object类的方法,toString的重写.
    多态
    类的继承
    面对对象
  • 原文地址:https://www.cnblogs.com/yaoxublog/p/10940042.html
Copyright © 2020-2023  润新知