zoukankan      html  css  js  c++  java
  • 计算机基础(原码补码 负号运算)

    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  前后都会运算*/
    
        }
    
    }
    
    
  • 相关阅读:
    日报11.1
    CCC2020 Surmising a Sprinter's Speed
    3D扫雷 (3D Minesweeper)
    如何使用小米手环与PN532(或类似芯片)复制验证卡号的IC卡
    分享一个api:随机二次元图片
    NOIP2017 时间复杂度 大模拟
    《区块链100问》笔记整理——42~49问
    Coursera-AndrewNg(吴恩达)机器学习笔记——第四周编程作业(多分类与神经网络)
    Coursera-AndrewNg(吴恩达)机器学习笔记——第四周
    《区块链100问》笔记整理——23~41问
  • 原文地址:https://www.cnblogs.com/yaoxublog/p/10940042.html
Copyright © 2011-2022 走看看