网站首页 > 精选教程 正文
java位运算符
位运算的操作数类型是整型,有符号的或无符号的。位运算符可以分为两大类:位逻辑运算符和位移运算符。
位运算符种类
& 与 a&b,
丨或 a|b,
~ 取反 ~a,
^ 异或 a^b,
<< 左移位 a<<3,
>> 右移位 b>>3,
>>> 无符号右移位 x>>>3
1. 位逻辑运算符
位逻辑运算符包括&、|、^和~,前三个是双目运算符,第四个是单目运算符。
(1)位逻辑与实际上是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求与, 若两个操作数对象同一位都为 1,则结果对应位为 1,否则结果对应位为0。
按位与运算符:
运算规则:两个操作数中位都为1,结果才为1,否则结果为0。例如(a的值为130,二进制为10000010;b的值为128,二进制为10000000。根据&运算符的运算法则可以知道,只有一个位都为1,结果才为1,因此结果是10000000,即128。)
(2)位逻辑或实际上是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求或,若两个操作数对象同一位都为 0,则结果对应位为 0,否则结果对应位为1。
按位或运算符:
运算规则:两个位只要有一个为1,那么结果就是1,否则就为0。例如(a的值为131,二进制为10000011;b的值为128,二进制为10000000。根据运算法则可以知道,只有两个位有一个位是1,结果就是1,因此运算结果是10000011,即131。)
(3)位逻辑异或实际上是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求异或,若两个操作数对象同一位不同时,则结果对应位为 1,否则结果对应位为0。
按位异或运算符:
运算规则:相同则结果为0,不同则结果为1。例如(a的值为15,二进制为1111;b的值为3,二进制为0011。根据运算法则可以知道,结果为1100,即12。)
(4)取反运算符,实际上是将操作数转换成二进制表示方式,然后将各位二进制位由1变为0,由0变为1。
按位非运算符:
运算规则:如果位为0,结果是1;如果位为1,结果是0。
&、|、^也可以用于逻辑运算。
2. 位移运算符
移位运算有三个,分别是左移<<、右移>>和无符号右移>>>,这三个运算符都是双目操作。
(1)左移是将一个二进制操作数对象按指定的移动位数向左移,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补充。左移相当于乘以2的幂。
(2)右移是将一个二进制的数按指定的位数向右移动,右边(低位端)弃,左边(高位端)用符号位补充,正数的符号位为 0,负数的符号为 1。
(3)无符号右移是将一个二进制的数按指定的位数向右移动,右(低位端)弃,左边(高位端)一律用 0 填充,运算结果相当于除以 2 的幂。
左移、右移、无符号右移运算符:
左移:将运算符左边的对象,按右边制定的位数向左移动运算符,并在低位补0。向左移n位,就相当于乘以2^n。
右移:将运算符左边的运算对象按右边指定的位数向右移动运算符。如果是正数,则在高位补0;如果是复数,则在高位补1。
无号符:将运算符左边的对象按右边指定的位数向右移动运算符,并且在高位补0,其实右移n 位,就相当于除于2^n。
从二进制的实现机制来说, byte、short不适用于>>>操作。
- 上一篇: Java路径-08-Java运算符 java官网
- 下一篇: Java的运算符 java的运算符题目
猜你喜欢
- 2024-11-04 都这年头了不会还有人不知道「java」运算符吧?
- 2024-11-04 java基础-运算符例子 java中运算符
- 2024-11-04 第四讲《JAVA基础之运算符》,小妙招教你速记、速填坑
- 2024-11-04 Java教程之运算符 java | 运算符
- 2024-11-04 《Java编程思想》第五版:第四章 运算符
- 2024-11-04 道哥说编程----Java运算符中的算数运算符
- 2024-11-04 一起学JAVA 初识JAVA运算符 java ^运算符
- 2024-11-04 Java理论学习三分钟-运算符(上) java运算符总结
- 2024-11-04 Java位运算符:Java移位运算符、复合位赋值运算符及位逻辑运算符
- 2024-11-04 Java运算符之算术运算符和举例说明
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)