Java中的位运算

     Java中的位运算有五种形式: 即 与 运算 &,或运算 | ,异或运算  ^ ,左移、右移运算;与运算与或运算都很好理解,异或运算就是在或运算的基础上,异或运算 0^x=x;x^x=0;今天主要是想记录一下左移与右移运算:

   在Java中左移运算,就是就二进制数最高位移除掉,并在末位增加0;例如10的八位二进制0000 1010;10<<1;执行后的结果就是00010100,变成了20;常用的代码形式为: n<<=1;表示n左移1位。

    Java中右移运算较左移运算稍微复杂点;其右移分为无符号右移>>>和有符号右移>>;个人理解这里的有无符号就指负数和正数,因为十进制的负数转化位二进制,是需要先将负数的绝对值转化为二进制,再按位取反并加1,例如-10,它的八位二进制表示就是1111 0110;也就是如果是无符号右移,那么二进制数都是“正数”;所以可以常规的在最高位补0;例如 -10>>>1;执行后的结果就是0111 1010;如果是有符号数右移则是在最高位补1;例如-10>>1;执行后的结果就是:1111 1011十进制为-5。

 

posted @ 2020-07-03 16:56  九鼎很难顶  阅读(230)  评论(0编辑  收藏  举报