java中常见的位运算符:&(逻辑与)  |(逻辑或)  ~(取反)  ^(逻辑异或)  >>(右移)  <<(左移)  >>>(无符号右移)

&(逻辑与):

true&true=true

true&false=false

false&true=false

false&false=false

结论:左右两边同真为真,一假为假。

&还可以用于位运算,位运算都需要换算成二进制进行运算

例:4&6=4

  0100    4

& 0110    6


  0100    4

原理同它的逻辑运算一样,两边都是1的时候为1,有一个是0为0

|(逻辑或):

true&true=true

true&false=true

false&true=true

false&false=false

结论:左右两边一真为真,同假为假。

|还可以用于位运算,位运算都需要换算成二进制进行运算

例:4|6=6

  0100    4

& 0110    6


  0110    6

原理同它的逻辑运算一样,两边都是0的时候为0,有一个是1为1

~(取反)

取反就是把二进制0变成1,1变成0

例:对十进制6进行取反

6---------0000-0000  0000-0000  0000-0000  0000-0110

~


     1111-1111  1111-1111  1111-1111  1111-1001----------这个数就是6取反得到的

^(逻辑异或)

两边相同为false,不同为true

true^true=false

true&false=true

false&true=true

false&false=false

例:8^4=12

8---------0000-0000  0000-0000  0000-0000  0000-1000

4---------0000-0000  0000-0000  0000-0000  0000-0100


     0000-0000  0000-0000  0000-0000  0000-1100

PS:一个数异或同一个数两次,结果还是那个数。  例:8^4^4=8

<<(左移)  左移相当于把该数乘以2的n次方,(n是移动的位数)

例:3<<2=12

就是把3的二进制表现形式整体向左移动两位,右边空位补0

3-----------0000-0000  0000-0000  0000-0000  0000-0011

<<


       0000-0000  0000-0000  0000-0000  0000-1100 -----------12

>>(右移)  右移相当于把该数除以2的n次方,(n是移动的位数)

例:3>>2=0

就是把3的二进制表现形式整体向右移动两位,左边高位空缺,原有最高位是什么,补什么(是0补0,是1补1)

3-----------0000-0000  0000-0000  0000-0000  0000-0011

>>


       0000-0000  0000-0000  0000-0000  0000-0000 -----------0

>>>(无符号右移)   

右移后,高位缺失,不管原有最高位是什么。都补0.

负数二进制表现形式:

就是把该数的正数二进制表现形式取反后+1

以6为例

6---------0000-0000  0000-0000  0000-0000  0000-0110

~


     1111-1111  1111-1111  1111-1111  1111-1001----------这个数就是6取反得到的

+1   0000-0000  0000-0000  0000-0000  0000-0001


     1111-1111  1111-1111  1111-1111  1111-1010----------这个数就是-6

注意:负数的最高位是1,正数的最高位是0。

java基础之位运算的更多相关文章

  1. java ----> 基础之位运算

    package test.ant; import java.util.Arrays; import java.io.UnsupportedEncodingException; public class ...

  2. Java二进制和位运算,这一万字准能喂饱你

    基础不牢,地动山摇.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的乌托 ...

  3. Java中的位运算

    昨天去面试的时候做到了一道Java的位运算题目,发现有个运算符不懂:">>>",今天特地查了一下,并小结一下常见的位运算符号: ~  按位非(NOT)(一元运算) ...

  4. Java学习之位运算和逻辑运算符

    今天看了一下HashMap类的源码,在HashMap的源码中定义了初始空间的大小 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; 当 ...

  5. Java 基本数据类型 && 位运算

    1. Java基本数据类型 1.1 数据类型示意图 类型 字节数 范围 byte 1 -128~127 short 2 -32768~32767 int 4 -231~231-1 long 8 -26 ...

  6. [java基础] 002 - 位运算符的详解和妙用

    一:位运算符详解 位运算符主要用来对操作数二进制的位进行运算.按位运算表示按每个二进制位(bit)进行计算,其操作数和运算结果都是整型值. Java 语言中的位运算符分为位逻辑运算符和位移运算符两类, ...

  7. Java中的位运算及简单的算法应用介绍

    众所周知,计算机底层是二进制.而java作为一门计算机编程语言,也对二进制的位运算提供了完整的支持. 在java中,int是32位的,也就是说可以用来实现32位的位运算.方便起见,我们一般用16进制对 ...

  8. day04-Python运维开发基础(位运算、代码块、流程控制)

    # (7)位运算符: & | ^ << >> ~ var1 = 19 var2 = 15 # & 按位与 res = var1 & var2 " ...

  9. java中通过位运算实现多个状态的判断

    通过 <<  |  & ~ 位运算,实现同时拥有多个状态 通过 << 定义数据的状态 public interface LogConstants { /** * 消耗标 ...

随机推荐

  1. Hadoop之RPC简单使用(远程过程调用协议)

    一.RPC概述 RPC是指远程过程调用,也就是说两台不同的服务器(不受操作系统限制),一个应用部署在Linux-A上,一个应用部署在Windows-B或Linux-B上,若A想要调用B上的某个方法me ...

  2. 文本处理sed常用操作

    文本处理sed常用操作 linux sed (stream editor) is a Unix utility that parses and transforms text, using a sim ...

  3. 微信小程序获取html内容后展示(C#)

    使用场景:微信小程序 具体功能:从服务器获取文章内容 展示在小程序里 使用语言: C# -------------------------------------------------------- ...

  4. Arduino LiquidCrystal Library Bug Report #174181

    Arduino LiquidCrystal Character LCD Driver Library BUG Report #174181 by Conmajia Effected Devices H ...

  5. 数据库Schema两种含义~~

    1.数据库Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完整地描述了数据库的结构.还有一种是物理上的 Schema,指的是数据库中的一个名字空间,它包含一组表.视 ...

  6. Java 比较(==, equals, compareTo, compare)

    在Java中,有 ==, equals(), compareTo(), compare() 等方法可以比较两个值或对象,比较容易混淆.画了个简单的思维导图总结一下 Java Compares 我经常记 ...

  7. 100_remove-duplicates-from-sorted-array

    /*@Copyright:LintCode@Author:   Monster__li@Problem:  http://www.lintcode.com/problem/remove-duplica ...

  8. Nodejs进阶:MD5入门介绍及crypto模块的应用

    本文摘录自<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 简介 MD5(Message-Digest Algorithm) ...

  9. vim 字符串替换整理

    公司项目测试,要在vi编辑其中进行多路径修改,这时候用到了字符串替换的知识,在这里我自己整理了一下. 一.基本内容替换,无特殊符号 :s/old/new/  替换当前行第一个 old 为 new   ...

  10. Google Firebase Unity接入的坑

    就说跑demo碰到的坑吧 https://firebase.google.com/docs/unity/setup 这是Firebase Unity的setup指南 大概写写步骤: 1. Fireba ...