位运算符

位运算符概述位运算符就是直接对二进制进行操作的运算符主要有以下几种:<<左移符号位参与移动,空位补0,被移除的最高位舍去。一般正数每左移一位相当于原来的值*2>>右移符号位不参与移动当为正数,空位补0,;当为负数,空位补1一般正数每右移一位相当于原来的值/2&

大家好,欢迎来到IT知识分享网。位运算符"

概述

  位运算符就是直接对二进制进行操作的运算符

 

主要有以下几种:

  <<

    左移

    符号位参与移动,空位补0,被移除的最高位舍去。

    一般正数每左移一位相当于原来的值*2

  >>

    右移

    符号位不参与移动

    当为正数,空位补0,;当为负数,空位补1

    一般正数每右移一位相当于原来的值/2

  >>>

    无符号右移

    符号位也参与移动,空位补0,被移除的舍去

 

二进制由0和1组成,一般的,0代表false,1代表true,于是按位运算相当于普通的逻辑运算了。

 

  &

    按位与

  |     

    按位或

  ~   

    按位取反

  ^

    按位异或

    异或有一个特点,就是a^b = c; 则a^c能得到b;b^c = a;

 

首先操作的是二进制,是什么形式的二进制呢?

  我们知道java里面数据是用二进制补码的形式存储的,也就是说操作的是数据的二进制补码。

 

例子:

public class TestOperator3 {
    /*
         00000011  3<<
        00001100
        
        00000011  3>>
        00000001
        
        -3
        10000000 00000000 00000000 00000011
        11111111 11111111 11111111 11111100
        11111111 11111111 11111111 11111101
        
        11111111 11111111 11111111 11111101
        011111111 11111111 11111111 1111110
        
        11111110
        11111101
        10000010
        
        
        1代表true,0false
        &
        |
        ^
        ~(!)
        
        00000110 6&3
        00000011
        00000010 2
        
        00000110 6|3
        00000011
        00000111 7
        
        00000110 6^3
        00000011
        00000101 5
        
        注意:位运算符进行运算符号位也参与
        
        00000110 ~6
        11111001 11111000 10000111 -7
    
    
    
    */
    public static void main(String[] args) {

        
        /*
        i = 3<<2;
        System.out.println(i);
        i = 3>>1;
        System.out.println(i);
        i = 3>>>1;
        System.out.println(i);
        
        byte i = (byte)(-3>>>1);
        System.out.println(i);
        
        //2147483646
        //2147483646
        System.out.println(0b01111111111111111111111111111110);
        */
        
        
        
        System.out.println(6&3);
        System.out.println(6|3);
        System.out.println(6^3);
        
        System.out.println(~6);
        
        

        
    }
}

 

一般按位运算是速率最快的,因为计算机内是使用二进制进行运算的,而位运算直接操作的是二进制。

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32003.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信