zoukankan      html  css  js  c++  java
  • 位运算有符号右移和无符号右移

    << :左移运算符,n<<1相当于 n*2
    >> :右移运算符,n>>1相等于n/2
     >>>:无符号右移,忽略
    int a=-1;
    -1的32进制位:
    源码 :     0000 0000 0000 0000 0000 0000 0000 0001
    反码 :     1111 1111 1111 1111 1111 1111 1111 1110
    补码 :     1111 1111 1111 1111 1111 1111 1111 1111 (在反码基础上+1)
    a<<2:    1111 1111 1111 1111 1111 1111 1111 1100
    a>>2:    1111 1111 1111 1111 1111 1111 1111 1111  (右移两位,左边高位再补两个1,所以看着没什么变化)
    a>>>2:  0011 1111 1111 1111 1111 1111 1111 1111  (无符号右移跟上个比起来就是高位不补1)
                
     
    上面-1 >>2看着没什么变化可以换成-5 试试:
    int  a=-5;
    System.out.println(Integer.toBinaryString(a));
    System.out.println(Integer.toBinaryString(a>>2));
    System.out.println(a>>2);
    11111111111111111111111111111011
    11111111111111111111111111111110
    -2
    -------------------------------------------------------
    int a=-5;
    System.out.println(Integer.toBinaryString(a));
    System.out.println(Integer.toBinaryString(a>>>2));
    System.out.println(a>>>2);
    11111111111111111111111111111011
    111111111111111111111111111110
    1073741822
  • 相关阅读:
    公司程序升级 win2008
    软件
    crystal 2008升级(草稿)
    crystalreportviewers12的一些修改
    Crystal Report 2008
    deep learning 相关资料 Lei
    如何打印出符合acm要求的pdf Lei
    matlab常用命令 Lei
    Wilson Interval Lei
    Perl / Shell 脚本语言 Lei
  • 原文地址:https://www.cnblogs.com/345214483-qq/p/6472136.html
Copyright © 2011-2022 走看看