zoukankan      html  css  js  c++  java
  • 操作运算符的简记

    1)"^":按位异或:将整型数据转换成二进制后再取两个数的异或值。
    2)"~":按位取反:将整型数据转换成二进制后再取反。

    举个例子:int i = 5;int j = 10;System.out.println(i + ~j);//输出-6

    解释:
    1)根据公式:-n=~n+1可推出~n=-n-1,所以~10=-11再加5结果为-6
    2)使用源码补码反码知识:原码才可以对应为正常的整数,补码只有转换为原码才能被正常人类识别(计算机本身存储的是补码)
    计算机本身存储的是补码:10的补码就是10的原码(正数的三种都一样):10的补码:0000000000001010
    ~10的补码就是:1111111111110101
    ~10的反码就是:1111111111110100(补码减一)
    ~10的原码就是:1000000000001011(反码取反,最前一位是符号位)


    3)"l":按位或(区分一下逻辑或ll)
    "|"和"||"的区别就在于:(a|b)无论|前面是否为false,后面的都执行;而(a||b)如果a表达式为true的话,后面的就不执行了。所谓的短路功能(检测false)也是这个意思:具备短路功能的,会先检测前面,成立(为false)再检测后面。不具备短路功能的话就会检查每一个条件。
    4)"&":按位且(区分一下逻辑且&&)
    "&"和"&&"的区别就在于:(a&b)无论&前面是否为true,后面的都执行;而(a&&b)如果a表达式为false的话,后面的就不执行了。所谓的短路功能(检测true)也是这个意思:具备短路功能的,会先检测前面,成立(为true)再检测后面。不具备短路功能的话就会检查每一个条件。
    3)左移<<:补0,相当于乘以2
    4)右移>>:补符号位,相当于除以2
    5)无符号右移>>>:补0
    6)%取余操作,只适用于整型

    7

  • 相关阅读:
    BZOJ 4503: 两个串 FFT
    [FJOI2014]最短路径树问题
    [JSOI2009]游戏Game
    bzoj 2463 [中山市选2009]谁能赢呢?
    [CQOI2007]余数求和
    [NOI2011]兔兔与蛋蛋游戏
    [HNOI2015]实验比较
    bzoj2125 最短路
    [COGS 2877]老m凯的疑惑
    [HNOI2015]开店
  • 原文地址:https://www.cnblogs.com/yangrongkuan/p/12023238.html
Copyright © 2011-2022 走看看