Java位运算和逻辑运算的区别实例
public class Test {
public static void main(String[] args) {
// 逻辑运算符执行的是短路求值,当左边操作数可以推断出表达式的值,就不再执行 了
int x, y = 10;
if (((x = 0) == 0) || ((y = 20) == 20)) {
System.out.println(y);// 输出10
}
// 位操作运算不管值是如何,任何参与运算的表达式都会被执行求值
int a, b = 10;
if (((a = 0) == 0) | ((b = 20) == 20)) {
System.out.println(b);// 输出20
}
}
}
相关推荐
-
Java 通过位运算求一个集合的所有子集方法
Java没有自带的求一个集合的所有子集的方法,我们可以通过集合的子集规律来求. 一个集合的所有子集等于2^该集合的长度.比如{c,b,a}的长度为3,这个集合的子集就有8个. 这句话看起来很简单,但同时也隐含着高深的哲理.其实一个集合的所有集合,和2^该集合的长度这个数字有关.比如上面的例子,{c,b,a}的长度为3,则可以用0-7表示其所有子集.如下所示,改数字所对应的位置为1,则说明我需要这个数字形成子集.从0-7的二进制表示,刚好代表完,一个长度为3,子集个数为8的所有子集. 0(000)
-
Java中的位运算符、移位运算详细介绍
一.位运算 Java中有4个位运算,它们的运算规则如下: (1)按位与 (&) :两位全为1,结果为1,否则为0: (2)按位或 (|) :两位有一个为1,结果为1,否则为0: (3)按位取反(~):0 变 1, 1变0: (4)按位异或(^):两位,如果相同,结果为0:如果不同,结果为1: 注意: (1)位运算中的 符号位(最高位)也跟着变; (2)位运算符与逻辑运算符(逻辑与&&.逻辑或||.逻辑非! )有点相似.但是,逻辑运算符只能操作boolean变量 (也就是左右两边的值
-
Java 得到集合中所有子集
面试中有一道笔试题,大概意思如下: 输入一个集合,输出这个集合的所有子集.例如输入:1,2,4 输出结果如下所示: [1] [2] [4] [1, 2] [1, 4] [2, 4] [1, 2, 4] 需要认识的:空集是任何集合的子集:真子集为不包含子集的集合:非空真子集即不包含子集与空集合 解题思路: 这道题可以使用"按位对应法"进行计算 如集合A={a,b,c},对于任意一个元素,在每个子集中,要么存在,要么不存在. 映射为子集: (a,b,c) (1,1,1)->(a,b,
-
java位运算加密示例
创建一个类,通过位运算中的"^"异或运算符把字符串与一个指定的值进行异或运算,从而改变字符串每个字符的值,这样就可以得到一个加密后的字符串.当把加密后的字符串作为程序输入内容,再与那个指定的值进行异或运算,实现把加密后的字符串还原为原有字符串的值. 复制代码 代码如下: import java.util.Scanner;public class Example { public static void main(String[] args) { Scanner sc
-
Java中位运算(移位、位与、或、异或、非) 的简单实例
复制代码 代码如下: public class Test { public static void main(String[] args) { // 1.左移( << ) // 0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0:// // 0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为20 System.out.pri
-
Java位运算和逻辑运算的区别实例
复制代码 代码如下: public class Test { public static void main(String[] args) { // 逻辑运算符执行的是短路求值,当左边操作数可以推断出表达式的值,就不再执行 了 int x, y = 10; if (((x = 0) == 0) || ((y = 20) == 20)) { System.out.println(y);// 输出10 }
-
Java位运算知识点详解
在日常的Java开发中,位运算使用的不多,使用的更多的是算数运算(+.-.*./.%).关系运算(<.>.<=.>=.==.!=)和逻辑运算(&&.||.!),所以相对来说对位运算不是那么熟悉,本文将以Java的位运算来详细介绍下位运算及其应用. 1. 位运算起源 位运算起源于C语言的低级操作,Java的设计初衷是嵌入到电视机顶盒内,所以这种低级操作方式被保留下来.所谓的低级操作,是因为位运算的操作对象是二进制位,但是这种低级操作对计算机而言是非常简单直接,友好高效
-
深入学习java位运算的基础知识
相信大家和我一样,接触java这门语言的时候就听过java位运算的鼎鼎大名,当然也仅限于听说过.日常开发过程中使用过么?使用位运算的好处是什么? 想要真正理解java位运算,首先要搞清楚,这个"位"代表的含义. 一切的起源:二进制 位:二进制位,简称"位".是二进制记数系统中表示小于2的整数的符号,一般用1或 0表示,是具有相等概率的两种状态中的一种.二进制位的位数可表示一个机器字的字长,一个二进制位包含的信息量称为一比特(bit). 举个栗子: int占4个字节(
-
java中 String和StringBuffer的区别实例详解
java中 String和StringBuffer的区别实例详解 String: 是对象不是原始类型. 为不可变对象,一旦被创建,就不能修改它的值. 对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去. String 是final类,即不能被继承. StringBuffer: 是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象 它只能通过构造函数来建立,
-
JAVA位运算的知识点总结
一.在计算机中数据是如何进行计算的? 1.1:java中的byte型数据取值范围 我们最开始学习java的时候知道,byte类型的数据占了8个bit位,每个位上或0或1,左边第一位表示符号位,符号位如果为1表示负数,为0则表示正数,因此要推算byte的取值范围,只需要让数值位每一位上都等于1即可. 我们来用我们的常规思维来分析下byte类型的取值范围: 图1 如果按照这种思路来推算,七个1的二进制数转换为十进制是127,算上符号位,取值范围应为:-127~+127,但事实上我们知道,byte的取
-
Java基础之位运算知识总结
一.位运算的分类与展现效果 java位运算可以分为左移和右移,其中右移还有无符号右移. java只对整型位移,可以分为int体系和long体系.int体系包括(byte, short, int, char),long体系只包含long.int体系中进行位运算时,除int类型外都会先转换为int再进行运算.. 无符号右移指的是,向右移动时,左边补位的是0. 一般来说,右移左移常用作乘2n 或者除以2n.(右移除以2n,左移乘以2n) int i1 = 4; int r1 = i1 >> 2;
-
Java必备知识之位运算及常见进制解读
目录 常见几种进制? Java八种按位运算? HashMap添加元素四步曲用到的位运算? 前奏:HashMap如何添加一个元素? 第一步曲 第二步曲 第三步曲 第四步曲 终曲:为什么HashMap底层源码用这么多位运算? 您好,我是贾斯汀,欢迎又进来学习啦! [学习背景] 学习Java的小伙伴,都知道想要提升个人技术水平,阅读JDK源码少不了,但是说实话还是有些难度的,底层源码实现的原理离不开各种常用的数据结构和算法,很多时候还会用到各种位运算,比如面试必问和工作写烂透了的HashMap,就一个
-
Java利用位运算实现加减乘除的方法详解
目录 前言 一.常见位运算 1. &运算 2. |运算 3. ^运算 4. ~运算 二.位运算实现加法 三.位运算实现减法 四.位运算实现乘法 五.位运算实现除法 前言 我们经常使用的加减乘除,我们所看到的只是表面的效果,那么加减乘除在底层究竟是怎么实现的?今天就让我们一探究竟.今天用位运算实现的加减乘除不使用任何的加减乘除符号. 一.常见位运算 1. &运算 &运算二进制每一位全1为1,否则为0 public static void main(String[] args) { i
-
Java利用位运算实现比较两个数的大小
目录 题目要求 主要思路 方法1(不考虑溢出) 方法2(考虑溢出情况) 题目要求 如何不要用任何比较判断符(>,==,<),返回两个数( 32 位整数)中较大的数. 主要思路 方法1(不考虑溢出) 要比较 a 和 b 的大小,因为不能用比较符号,我们可以通过 a - b 的符号位来判断,如果 a - b 的符号位是 1,说明 a - b < 0,则 a 小,否则 a 大或者 a 和 b 相等. 如何判断一个数的符号位是 0 还是 1 ? 由于是 32 位整数,所以如果将一个数右移 31
随机推荐
- asp.net core MVC 过滤器之ActionFilter过滤器(2)
- 基于ajax实现无刷新分页的方法
- CSS网页布局入门教程9:用CSS设计网站导航——横向导航
- golang之log rotate详解
- jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
- .NET之后台用户权限管理实现
- D3.js封装文本实现自动换行和旋转平移等功能
- php使用explode()函数将字符串拆分成数组的方法
- php过滤XSS攻击的函数
- VIM中设置php自动缩进为4个空格的方法详解
- C#数据结构之循环链表的实例代码
- C#计算器编写代码
- MySQL操作数据库和表的常用命令新手教程
- PHP中函数rand和mt_rand的区别比较
- JavaScript获取flash对象与网上的有所不同
- JS 拼图游戏 面向对象,注释完整。
- 如何在Linux上安装Node.js
- C语言实现Linux下的socket文件传输实例
- Android图片占用内存全面分析
- Java编程构造方法与对象的创建详解