精华内容
下载资源
问答
  • Java位运算符

    2018-08-08 17:59:46
  • java位运算符

    2015-12-20 22:03:40
    java位运算符“与”、“非”、“或”、“异或”。
  • JAVA位运算符

    2021-03-02 11:17:37
    JAVA位运算符 位运算符: 位运算符 说明 & 与运算符 | 或运算符 ^ 异或运算符 ~ 非运算符 << 左移运算符 >> 右移运算符 public class Demo03 { public static void main...

    JAVA位运算符

    位运算符:

    位运算符 说明
    & 与运算符
    | 或运算符
    ^ 异或运算符
    ~ 非运算符
    << 左移运算符
    >> 右移运算符
    public class Demo03 {
        public static void main(String[] args) {
            /*
            A = 0011 1100
            B = 0000 1101
            -----------------------
            A&B = 0000 1100  //两个操作数中 位都为1,结果才为1;否则结果为0
            A|B = 0011 1101  //两个操作数中 位有一个为1,结果就为1;否则结果为0
            A^B = 0011 0001  //两个操作数中 位相同就为0,不同就为1
            ~A = 1100 0011  //位值取反,是1变0,是0变1
    
            <<(左移)    *2
            >>(右移)    /2
    
            0000 0000     0
            0000 0001     1(2的 1-1 次方)
            0000 0010     2(2的 2-1 次方)
            0000 0011     3(2的 2-1 次方 + 2的 1-1 次方)
            0000 0100     4(2的 3-1 次方)
            0000 1000     8(2的 4-1 次方)
            0001 0000     16(2的 5-1 次方)
    
             */
    
            System.out.println(2 << 3); //2*2*2*2
    
        }
    }
    
    

    运行结果:
    在这里插入图片描述

    展开全文
  • Java 位运算符

    2020-05-01 13:45:43
    大家好,我是大明沙利,今天就来系统的看一下Java 位运算符。 只讲能用到的,花里胡哨的没有。欢迎白嫖。 Java 位运算符 &、|、^、~、<<、>>、>>> 闲扯 关于位运算符无非也就 与(&)、...

    大家好,我是大明沙利,今天就来系统的看一下Java 位运算符。
    只讲能用到的,花里胡哨的没有。欢迎白嫖。

    Java 位运算符 &、|、^、~、<<、>>、>>>

    闲扯

    关于位运算符无非也就 与(&)、或(|)、异或(^)、取反(~)、左移(<<)、右移(>>)、无符号右移(>>>)
    位运算其实就是二进制的运算,加减乘除适用于十进制,而位运算就是二进制的运算,但是由于我们的运算都是基于十进制来说的,所以会有点绕,略微有点难懂,接下来言归正传

    关于二进制

    我们在编码过程中应该会了解很多不同的进制,除去常用的十进制,还有二进制、八进制、十六进制,因为我们的位运算符主要用到二进制,就只讲讲二进制
    几进制就是一个位上最多能表示几个数,如十进制的个位有0-9十个数字,八进制有0-7八个数字,二进制我们自然想到就是0~1两个数字
    我们编码中最小的单位应该是字节,而一个字节有8位,每一位就是一个0或1,所以一个字节用二进制表示就是
    在这里插入图片描述

    这样的

    与运算符(&)

    如果 4&7 那么这个应该怎么运算呢?
    首先我们需要把两个十进制的数转换成二进制
    4 : 0000 0100
    7 : 0000 0111

    在这里插入图片描述

    在这里要提到一点,1表示true,0表示false
    而与运算的时候相同位之间其实就是两个Boolean的运算
    全true(1),即为true(1)
    全false(0),即为false(0)
    一false(0)一true(1),还是false(0)

    或运算符(|)

    以 5|9 为例

    5 : 0000 0101
    9 : 0000 1001
    在这里插入图片描述

    在做与运算的时候
    遇true(1)就是true(1),
    无true(1)就是false(0)

    异或运算符(^)

           以 7^15 为例
           7:   0000 0111
           15: 0000 1111
    

    在这里插入图片描述

    在异或的时候
    只要相同都是false(0)
    只有不同才是true(1)

    取反运算符(~)

        例:   ~15
        同样的先变成二进制:15:0000 1111
    

    在这里插入图片描述

      这个其实挺简单的,就是把1变0,0变1
    

    注意:二进制中,最高位是符号位 1表示负数,0表示正数

    左移运算(<<)

      左移就是把所有位向左移动几位
    如:   12 << 2    意思就是12向左移动两位
          12的二进制是: 0000 1100
    

    在这里插入图片描述

    通过这个图我们可以看出来,所有的位全都向左移动两位,然后把右边空的两个位用0补上,最左边多出的两个位去掉,最后得到的结果就是00110000 结果就是48
    我们用同样的办法算 12<<3 结果是 96
    8<<4 结果是 128
    由此我们得出一个快速的算法 M << n 其实可以这么算 M << n = M * 2n

    右移运算符(>>)

    这个跟左移运算大体是一样的
    例: 12 >> 2

    在这里插入图片描述

    我们可以看出来右移和左移其实是一样的,但是还是有点不同的,不同点在于对于正数和负数补位的时候补的不一样,负数补1,正数补0
    如我们再做一个 –8 的 -8>>2

    在这里插入图片描述

    这里总结一下,关于负数或者正数来说,移位的时候是一样的,但是在补位的时候,如果最高位是0就补0,如果最高位是1就补1
    由此我们得出一个快速的算法 M >> n 其实可以这么算 M >> n = M / 2n

    无符号右移(>>>)

     无符号右移(>>>)只对32位和64位有意义
    

    在移动位的时候与右移运算符的移动方式一样的,区别只在于补位的时候不管是0还是1,都补0
    这个就不画图了

    推荐

    内容 链接
    Java基础 - java.lang.String https://blog.csdn.net/weixin_43845339/article/details/105646843
    Java基础 - 集合框架之List https://blog.csdn.net/weixin_43845339/article/details/105693694
    展开全文
  • java 位运算符

    2020-05-11 15:09:28
    单位换算: (1.)bit:位 一个二进制数据0或1,是1bit; (2.)byte:字节 1 byte = 8 bit , 存储空间的基本计量单 一个英文字符占一个字节; (3.)1 字母 = 1 byte = 8 bit ...Java 位运算符 &

    单位换算:
    (1.)bit:位
    一个二进制数据0或1,是1bit;

    (2.)byte:字节
    1 byte = 8 bit , 存储空间的基本计量单
    一个英文字符占一个字节;

    (3.)1 字母 = 1 byte = 8 bit
    一个汉字占2个字节;
    1 汉字 = 2 byte = 16 bit

    常见的位运算符有

    &(与)、|(或)、^(异或)、~(取反)、<<(左移)、>>(右移)、>>>(无符号右移)。

    关于位运算符参考文章
    Java 位运算符 &、|、^、~、<<、>>、>>>
    Java位运算原理及使用讲解

    位运算符对二进制数据进行处理,加减乘除适用于十进制,而位运算就是二进制的运算。

    一.用&判断一个数是奇数还是偶数:
    n&1为1则是奇数,为0则是偶数

            n&1 == 1?”奇数”:”偶数”
    

    二.用 << 计算乘法m*2^n。左移运算符相当于乘2,即每左移一位,则变为原来的2倍

    如(1): 12 << 1 的意思就是12向左移动一位

          12的二进制是:     00001100
          左移一位后二进制是:00011000,转化为十进制是24
    

    同理,12 << 3的意思就是12向左移动三位,即12 *2 *2 *2。

    三.用 >> 计算除法,这个跟左移运算大体是一样。右移运算符相当于除2,即每右移一位,则变一半。
    12 >>1即12/2

          12的二进制是:     00001100
          右移一位后二进制是:00000110,转化为十进制是6
    

    注意:当被除数为奇数时会取整。
    13>>1即13/2,右移后13的二进制最后一位1被移出,所以结果是6

          13的二进制是:     00001101
          右移一位后二进制是:00000110,转化为十进制是6
    

    四、使用^来进行两个数的交换,不需要用到临时变量。

          int x = 1234;
          int y = 7951;
    
          x ^= y;
          y ^= x;
          x ^= y;
    

    五、使用~取相反数

        int x = 1234;
        int y = ~x+1;
    

    六、求平均数
    对于两个整数x,y,如果用 (x+y)/2 求平均值,会产生溢出,因为 x+y 可能会大于INT_MAX,但是我们知道它们的平均值是肯定不会溢出的,我们用如下算法:

       int average(int x, int y) {    
        return (x&y)+((x^y)>>1); 
    } 
    

    七、求绝对值

    int abs( int x )
    {
    	int y ;
    	y = x >> 31 ;
    	return (x^y)-y ;     //或者: (x+y)^y
    }
    
    展开全文
  • Java位运算符Java定义的位运算(bitwiseoperators)直接对整数类型的位进行操作,这些整数类型包括long,int,short,char,andbyte ,用于操作二进制。包括有“&,|,^,~,<>,>>>”&:按位...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,830
精华内容 3,132
关键字:

java位运算符

java 订阅