一.位运算符操作的都是整数类型

1.<<:左移,在一定范围内向左移动n位,相当于乘以2的n次幂

  左移不管是正数还是负数,都是在后面添0;

2.>>:右移,在一定范围内向右移动n位,相当于除以2的n次幂,

   右移的话,正数移动n位,在左边补n位的0,负数移动n位的话,在左边补上n位的1;

3.无符号右移:>>>,无论是正数还是负数,空缺位都是用0来补。

4.异或:^:两者不相同则为1,两者相同则为0。 A=(A^B)^B

二.|和||、&和&&的区别

1.首先是|和||

共同点:只要有任意一边的是true,那么结果就是true,当两边都是false的时候,结果是false

不同点:|是两边都会运算,然后来判断结果;||是先运算左边的式子,如果为true,那么直接返回结果为true,如果左边的式子不为true,再去运算右边式子

2.&和&&

相同点:运算符的两边都是true的时候,结果才是true;

不同点:&是两边都会运算,然后来判断结果;&&是先运算左边的式子,如果是false,直接返回结果为false,否则再去运算右边的式子,如果是true结果就是true,如果是false,结果就是false;

三. 练习

题目:交换两个变量的值

方式一:定义临时变量

  int temp = num1;

  num1 = num2;

  num2 = temp;

方式二:不能定义临时变量

  就像是在一片大海上,有两块浮冰,每块浮冰只能让一个人站立,现在每块浮冰上面站着一个人,现在想要让他们交换一下位置。可以先让A骑到B 的头上,然后让A在踏上之前B站立的浮冰上,此时B在踏上刚才A站立的浮冰上。

  num1 = num1+num2;

  num2 = num1-num2;

  num1 = num1-num2;

优点:可以不用定义临时变量;

缺点:num1+num2可能超出数值范围、只适用于数值型

方式三:使用位运算符

  因为A=(A^B)^B,所以

  num1 = num1^num2;

  num2 = num1^num2;

  num1 = num1^num2;

缺点:同样是只适用于数值型。

  

  

位运算符、|和||、&和&&的区别的更多相关文章

  1. Java的算数运算符、关系运算符、逻辑运算符、位运算符

    JAVA的运算符,分为四类: 算数运算符.关系运算符.逻辑运算符.位运算符 算数运算符(9):+  -  *  /  %  ++  -- 关系运算符(6):==  !=  >  >=  & ...

  2. java入门学习(十一)逻辑运算符和位运算符

    请关注我的博客:www.taomaipin.com 家里有急事 暂停了几天,抱歉,现在呢开始说说java的运算语句和运算符 如果想利用java的运算语句 那么就离不开java的运算符,前面第九章讲了j ...

  3. java注释 命名 数据类型 基本类型转换 位运算符 逻辑运算符 三目运算符

    一.java注释 1.单行注释  //注释内容 2.多行注释 /*注释内容*/ 3.文档注释(可用javadoc工具生成api文档,不过我还没试过)/**文档注释*/,文档注释可以在使用的时候看见注释 ...

  4. (一)《Java编程思想》学习——按位运算符、移位运算符

    (第三章) (一)按位运算符 按位逻辑运算符有: “与”(AND)        & 1&1=1;1&0=0;0&0=0 “或”(OR) | 1|1=1;1|0=1;0 ...

  5. 2.&与&&以及位运算符。

    这是单独的一块,因为一条讲不清楚(虽然内容也不够一篇),而且我之前也没好好弄清楚,所以有必要写出来. 说位运算符也是从&与&&(|与||类似)之间的区别讲起的.事实上,对于两个 ...

  6. js按位运算符及其妙用

    大多数语言都提供了按位运算符,恰当的使用按位运算符有时候会取得的很好的效果. 在我看来按位运算符应该有7个: 1.& 按位与 &是二元运算符,它以特定的方式的方式组合操作数中对应的位, ...

  7. 逻辑运算符、位运算符、三元运算符、判断语句(if,switch)

    逻辑运算符 逻辑与 &:由false则false 逻辑或 |:有true则true 逻辑异或 ^:相同为false,不同为true 逻辑非 !:非false则true,非true则false ...

  8. 恶补java基础 位运算符

    以前不知道在哪看过别人写博客里的一句话  “越学的深入觉得自己会的东西越少”.最近研究了一下java的基础算法  hash表 被一些位运算符搞的头都大了 决心花一些时间研究一下以前一直觉得没用的东西! ...

  9. java入门---运算符&算术运算符&自增自减运算符&关系运算符&位运算符

        计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 ...

随机推荐

  1. 最详细的git使用教程

    git的安装可以参考我的博客:https://www.cnblogs.com/shanfeng1000/p/10969116.html 一.工作流程 Git 工作流程一般是: 克隆 Git 资源作为工 ...

  2. css基础-2 div布局

    div布局 <html> <head> <title>div布局 </title> <meta charset="utf-8" ...

  3. ASP.NET+MVC入门踩坑笔记 (一) 创建项目 项目配置运行 以及简单的Api搭建

    哈喽各位 我又回来了! 前段时间研究了下ASP.NET,刚开始也是随便找网上的各种教程来看,但是鉴于本人技术有限,还是走了相当长的一段弯路的.所以我写下了这篇文章.希望各位刚刚入坑的ASP.NET开发 ...

  4. Spring Cloud Eureka源码分析之心跳续约及自我保护机制

    Eureka-Server是如何判断一个服务不可用的? Eureka是通过心跳续约的方式来检查各个服务提供者的健康状态. 实际上,在判断服务不可用这个部分,会分为两块逻辑. Eureka-Server ...

  5. .NET Core 利用委托进行动态流程组装

    引言 在看.NET Core 源码的管道模型中间件(Middleware)部分,觉得这个流程组装,思路挺好的,于是就分享给大家.本次代码实现就直接我之前写的动态代理实现AOP的基础上直接改了,就不另起 ...

  6. 阿里云服务器ECS Ubuntu16.04 + Seafile 搭建私人网盘 (Seafile Pro)

    原文链接:? 传送门 本文主要讲述 使用 Ubuntu 16.04 云服务器 通过脚本实现对 Seafile Pro 的安装,完成私人网盘的搭建 首先给出 Seafile 专业版的下载地址(Linux ...

  7. Sharding Sphere的分库分表

    什么是 ShardingSphere? 1.一套开源的分布式数据库中间件解决方案 2.有三个产品:Sharding-JDBC 和 Sharding-Proxy 3.定位为关系型数据库中间件,合理在分布 ...

  8. Mysql group by之 Error 1055

    统计每个班级有多少人 我按照班级名称进行分组,返回  班级id和班级name出现了如下错误 报错的查询语句如下 -- 统计每个班级有多少人select c.id,c.name,count(*) fro ...

  9. golang中的go get命令

    ### 下载指定版本 go get k8s.io/klog@v1.0.0 go get 命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装. 这个命令在内部实际上分成了两 ...

  10. ansible roles实践——安装java

    [root@master] /etc/ansible$ cat roles/java/tasks/main.yml ---- name: unzip jdk unarchive: src=jdk-8u ...