Java 位运算符 深入理解
在Java中存在着这样一类操作符,是针对二进制进行操作的。它们各自是&、|、^、~、>>、<<、>>>几个位操作符。不管是初始值是依照何种进制,都会换算成二进制进行位
操作。接下来对这几种操作符进行一下简单的解说。
&:
作用是对运算符两側以二进制表达的操作符按位分别进行'与'运算。而这一运算是以数中同样的位(bit)为单位的。操作的规则是:仅当两个操作数都为1时。输出结果才为1。否
则为0,示比例如以下:
12 的二进制为 1100
5 的二进制为 0101
则 12 & 5 的二进制为 0100,则完整的运算式为 12 & 5 = 4;
|:
作用是对运算符两側以二进制表达的操作符按位分别进行'或'运算。而这一运算是以数中同样的位(bit)为单位的。
操作的规则是:仅当两个操作数都为0时,输出的结果才为0。
否则为1,示比例如以下:
12 的二进制为 1100
5 的二进制为 0101
则 12 | 5 的二进制为 1101。则完整的运算式为 12 & 5 = 13;
^:
作用是对运算符两側以二进制表达的操作数按位分别进行'异或'运算,而这一运算是以数中同样的位(bit)为单位的。
异或运算操作的规则是:仅当两个操作数不同一时候。对应的
输出结果才为1,否则为0,示比例如以下:
12 的二进制为 1100
5 的二进制为 0101
则 12 | 5 的二进制为 1001。则完整的运算式为 12 & 5 = 9;
~:
'取反'运算符~的作用是将各位数字取反:全部的0置为1,1置为0,示比例如以下:
12 的二进制为 1100
进行取反操作为 10000000 00000000 00000000 00001101
则完整的运算式为 ~12 = -13
<<:
左移就是把一个数的全部位数都向左移动若干位,示比例如以下:
12 的二进制为 1100
则 12 << 1 的二进制为 11000, 则完整的运算式为 12 << 1 = 24;
>>:
右移就是把一个数的全部位数都向右移动若干位,示比例如以下:
12 的二进制为 1100
则 12 >> 1 的二进制为 0110。 则完整的运算式为 12 >> 1 = 6;
>>>:
无符号右移一位。不足的补0。 示比例如以下:
12 的二进制为 1100
则 12 >> >1 的二进制为 0110, 则完整的运算式为 12 >> 1 = 6;
题外话:位运算是一种基于二进制的运算,涉及到知识包含原码、反码、补码,在此做一个小小的说明,
对于原码。就是当前数字的二进制表现形式,如-1的原码是1000 0001。
对于反码,正数的反码就是本身。负数的反码是二进制保留符号位。剩余位取反,比如-1的反码是1111 1110;
对于补码,正数的反码、补码、原码都是一样的,负数的补码是在其反码的基础上+1,比如-1的补码是1111 1111。
在JDK的原码中。有很多初始值都是通过位运算计算的,位运算有很多特性,能够在线性增长的数据中起到作用。且对于一些运算,位运算是最直接、最简便的方法。
转载于:https://www.cnblogs.com/gavanwanggw/p/7015620.html
Java 位运算符 深入理解相关推荐
- Java 位运算符详解
文章目录 Java 位运算符详解 前情提要: 一.简介 二.如何区分 &,|,^ 是逻辑运算符还是位运算符? 三.例子 按位与 & 按位或 | 按位异或 ^ 按位取反 ~ 左移 < ...
- java位运算符和位运算表达式
java位运算符和位运算表达式 > 右移 x>>a X各比特位右移a位 << 左移 X< >> 不带符号的右移 x>>>a X各比特位 ...
- java位运算符详解
java位运算符详讲 一.位运算符分类 java中位运算符主要有:按位与&.按位或|.按位非~.按位异或^. 在使用时,需要将运算数都转换为二进制再进行运算,若为负数则使用补码表示. ...
- java位运算符取反_java运算符
Java 语言支持如下运算符: 算术运算符: +,-,*,/,%,++,-- 赋值运算符 = 关系运算符: >,<,>=,<=,==,!=, instanceof 逻辑运算符: ...
- java 位运算符在实际开发中的用处_java 位运算 和实际应用
public class Test { public static void main(String[] args) { // 1.左移( < // 0000 0000 0000 0000 00 ...
- Java位运算符详解(移位、位与、或|、非~、异或^)
位运算符 位运算是对操作数以二进制为单位进行的操作和运算,运算结果为整数.位运算符包括:"&"."|"."~"."^&qu ...
- java位运算符取反_Java运算符之位运算符
位运算符 尹成课程资料及演示(免费)(文末有资料链接) 位运算符是针对二进制数的每一位进行运算的符号,它是专门针对数字0和1进行操作的.接下来通过一张表来展示Java中的位运算符及其用法,如表1所示. ...
- Java 位运算符的基本用法【1】
1.位运算符有哪些:&,|,^,~,>>,>>>,<< 2.&,|,^,~的用法: &(与运算符):有0则0 |(或运算符):有1则1 ...
- Java 位运算符和移位运算符
参考: Bitwise and Bit Shift Operators <Java 编程思想 第3章 操作符> 今天学习 Java BitSet 类时,发现对于位运算符和移位运算符的操作有 ...
最新文章
- VirtualBox6.0中CentOS7.6 网络配置
- 兵器工业计算机应用研究所刘培志,一种双目视觉立体匹配算法_2
- python程序设计报告-Python程序设计实验一报告
- 数组字符串转化成数组与eval函数
- 外媒:下代iPad Pro将同时具备无线充电和反向无线充电功能
- 在VS上部署OpenGL
- 复习webpack4之PWA打包配置
- 企业安全:业务的安全韧性
- 根据银行卡号判断银行卡是否正确与归属银行
- nodejs下载安装和环境搭建,以及nodejs各个版本如何绿色下载
- checkio Ascending List
- win下使用curl
- 电信IHO-3000机顶盒高安版 悦ME刷机固件
- nginx 499错误原因及解决
- 内核热补丁,真的安全么?| 龙蜥技术
- 8255A红绿灯c语言程序,微机原理十字路口红绿灯闪烁实验
- php7 kernel32,usleep()
- Eclipse的“order and export”是干什么用的?
- 32位与64位操作系统以及CPU的关系
- C#调用百度人体分析SDK进行人流量分析,计算图片的人数
热门文章
- python 遍历内嵌tuple_python内置数据结构list、set、dict、tuple(一)
- Mac/IOS Xcode Instruments资源统计及自动化相关
- Java21天打卡Day5-ifelse
- 自动化测试框架-pytest框架入门篇
- python解析接口_010 python接口 bs4解析html
- 华为nova2s云相册在哪里_华为反人类的用户体验
- matlab左除怎么输入法,python 实现matlab左除
- idea maven 删除dependencies_使用IDEA创建Maven工程 创建javase工程
- 基于迁移学习的辣椒病虫害搜索模型(裁剪病害区)
- PYTORCH 定义模型