zoukankan      html  css  js  c++  java
  • 位运算符

    概述

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

    主要有以下几种:

      <<

        左移

        符号位参与移动,空位补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);
            
            
    
            
        }
    }

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

  • 相关阅读:
    MapReduce数据连接
    STL笔记(2) STL之父访谈录
    Boost::Lexical_cast 的使用
    利用Python编写网络爬虫下载文章
    智普教育Python视频教程之入门基础篇,python笔记
    如何在windows下的Python开发工具IDLE里安装其他模块
    Windows命令行的使用
    Centos 开启telnet-service服务
    C,C++经典问题
    Linux/Unix C编程之的perror函数,strerror函数,errno
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/10554104.html
Copyright © 2011-2022 走看看