最近几种进制,加上各种位操作符,发现都比较模糊,不能完全掌握,这里就再熟悉熟悉。
1.按位操作符 :
按位操作符是用来操作基本数据类型中的单个bit,即二进制位,会对两个参数执行布尔代数运算,获得结果。
与(&)运算:
1&1 = 1, 1&0 = 0, 0&0 = 0; 这里相当于做乘法,也可以认为男女双方都有感觉才有结果。
或(|)运算:
1 | 1 = 1, 1|0=1, 0|0 = 0;这表示条件宽松,只有有一方有感觉,都可以有结果。
异或(^)运算
1 ^ 1 = 0; 1^0 = 1;0 ^ 0 = 0; 这表示两个冤家,非要不同,经过磨难才能有结果。
上面都是二元操作符,而 非(~) ,是一元操作符,也叫取反操作。连符号位 也会取反哦,
注意:上面的二元操作符可以和 “=”连用,比如:&=,|=。 一元非不行
2.移位操作符
这也是操作二进制的。
>> <<: 带符号的左右移位,也就是说移动之后,高低位 补 0 还是1 根据 正负数判定。1 负数,0正数
>> >: 无符号右移,无论正负数,前面(高位)都补0
注意:所有的位移运算都会先转换成 int 到二进制,再进行操作。先看移动过程
public static void main(String[] args) { int a = 2; // 原始数据 System.out.println(Integer.toBinaryString(a)); //00000000000000000000000000000010 前面的0,会被省略 System.out.println(Integer.toBinaryString(-a)); //11111111111111111111111111111110 // 带符号的 右移动,这里用负数,方便观察 System.out.println(Integer.toBinaryString(-a>>1)); //原始:11111111111111111111111111111110 //现在:11111111111111111111111111111111 比较,右移1位,前面自动加符号1 System.out.println(Integer.toBinaryString(-a<<1)); //原始:11111111111111111111111111111110 //现在:11111111111111111111111111111100 比较,左移1位,后面默认加0 // 看无符号 移动,也就是不管前面符号位 System.out.println(Integer.toBinaryString(-a>>>1)); //原始:11111111111111111111111111111110 //现在:1111111111111111111111111111111 比较,发现少了一位,因为无符号,默认前面补0 // 这个无符号 ,不能左移动 - -! //System.out.println(Integer.toBinaryString(-a<<<1)); }
下面看看 特殊的移动。
byte b = 127; System.out.println("原始:"+Integer.toBinaryString(b)); //原始:1111111 //现在:11111110 这里移动了就是254了,已经默认转换成int 了。 System.out.println(b<<1); // 这里如果强行转byte,会得到 -2. // int 和 byte 的转换,超过127,128 就会 成 -128,129 就成 -127.这样循环。 int c =1; // 因为int 只有32位,到31位的时候,就成负数了。 // 如果继续移动,就开始循环了。 for(int i =1;i<34;i++){ System.out.println(i+" : "+Integer.toBinaryString(c<<i)); System.out.println(c<<i); } }
这里就是一些简单的位移运算 方式了
相关推荐
在Java中,按位操作符用于对整数进行位级别的操作 按位与(&)操作符 按位或(|)操作符 按位异或(^)操作符 按位取反(~)操作符 左移()操作符 右移(>>)操作符
Java中的移位操作符用于对二进制数进行左移()、右移(>>)和无符号右移(>>>)操作。 左移()操作符:将一个数的所有位向左移动指定的位数,右侧空出的位用0填充。 右移(>>)操作符:将一个数的所有位向右移动...
Java操作符的优先级和结合性,对java的操作符的优先级和结合性做了详细的说明
在Java中,三元操作符是一种简洁的条件表达式,用于在两个值之间进行选择。
在 Java 中,关系操作符用于判断两个值之间的关系,并返回一个布尔值(true 或 false)。
表达式中有一个操作元是long型,则结果是long型的问题总结; 应该调用String的equals()方法,而不用“==”操作符的注意; java虚拟机对变量初始化为默认值。
Java是一种强类型语言,这意味着在Java中,每个变量都必须先声明其数据类型,然后才能使用。Java的数据类型可以分为两类:基本... :)和位操作符(&、|、^、~、、>>)。使用这些操作符时,需要注意它们的优先级和结合性
在Java中,有三种逻辑操作符用于处理布尔值(boolean):与(&&)、或(||)和非(!)。
java技术究竟应用于那些领域呢?让我们通过这些知识来了解一下
Java语言中的操作符及操作符的优先级[借鉴].pdf
Java的位操作符用来操作整数基本数据类型中的单个“比特”(bit),即代进制位。下面通过本文给大家分享Java的按位操作符,感兴趣的朋友一起看看吧
Java操作符总结__动力节点共20页.pdf.zip
下面小编就为大家带来一篇Java关系操作符简写介绍。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
位操作就是对这些数据进行基本的操作。如果基本类型是char、byte或者short类型的数值进行移位处理,那么会转化成int类型,再进行移位的处理
陈宝峰视频-Java基础-03.操作符与表达式 wmv格式
主要介绍了java instanceof操作符使用及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
2.8.2 语法 2.8.3 嵌入式HTML 2.8.4 一些标签示例 2.8.5 文档示例 2.9 编码风格 2.10 总结 2.11 练习 第3章 操作符 3.1 更简单的打印语句 3.2 使用Java操作符 3.3 优先级 3.4 赋值 3.4.1 方法调用中的别名问题 3.5 ...
今天小编就为大家分享一篇关于java字符串中${}或者{}等的占位符替换工具类,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
RxJava 操作符图片,, 根据Flowable.java 上面的http链接下载的图片,