Java 位运算的解读 & | ^ ~ << >>
Java中的位运算包括以下几种:
按位与(&):对应位上,如果两个数都是1,则结果为1,否则为0。
int a = 3; // 二进制 0011
int b = 5; // 二进制 0101
// 0001 = 1
System.out.println("a & b = " + (a & b));
按位或(|):对应位上,如果两个数有一个为1,则结果为1,否则为0。
int a = 3; // 二进制 0011
int b = 5; // 二进制 0101
// 0111 = 7
System.out.println("a | b = " + (a | b));
按位异或(^):对应位上,如果两个数不相同,则结果为1,否则为0。
int a = 3; // 二进制 0011
int b = 5; // 二进制 0101
// 0110 = 6
System.out.println("a ^ b = " + (a ^ b));
按位取反(~):对每一位,将0变为1,将1变为0。
// ~ 的运算规则:
// ~0 = -1
// ~1 = -2
// ~2 = -3
// ~3 = -4
// 因此,~3 = 1100 = -4
int a = 3; // 二进制 0011
// 1100 = -4
// a + ~a = -1 ,等于 1111
// 1111 + 1 = 0000 = 0
System.out.println("~a= " + (~a));
左移(<<):将二进制数向左移动指定位数,右边用0填充。
int b = 5; // 二进制 0101
// 1010 = 10 b << 1
// 10100 = 20 b << 2
System.out.println("b << 2 " + (b << 1));
右移(>>):将二进制数向右移动指定位数,左边用符号位填充。
int b = 5; // 二进制 0101
// 0010 = 2 b >> 1
// 0001 = 1 b >> 2
System.out.println("b >> 2 " + (b >> 2));
随机推荐
- 暴力密码破解工具——Hydra
Hydra简介 hydra中文意思为九头蛇,它是黑客组织thc开发一款开源暴力密码破解工具,可以在线破解多种密码,支持Windows Linux MAC系统安装使用(Kali Linux自带), 支持 ...
- Cobalt Strike 4.0系列教程
https://blog.csdn.net/weixin_45745344/article/details/109279097
- P5020 [NOIP2018 提高组] 货币系统 题解
转化为完全背包即可. #include <iostream> #include <cstring> #include <algorithm> using names ...
- 创建本地yum仓库
创建本地yum仓库 1,将镜像挂载到/mnt 如果失败打开虚拟机把设备状态的两个选项打勾 2,切换到客户端的指定目录 3,创建文件夹bak存放网络yum创库配置文件 4,将网络源移动到bak减少干扰 ...
- [POI2007]GRZ-Ridges and Valleys 题解
(2022-12-28 ) AcWing 1106 洛谷 P3456 题目大意 找出一个图中所有大于(或小于)周围相邻的非连通块点的所有连通块个数. 就是说,对于一个连通块: 如果它周围的点都低于它, ...
- 社区活动 | “中文 AI 微小说大赛”正式开启报名!
️ 我们要求每位参赛选手以 LLM (大语言模型)为工具,将 AI 的能力与选手的创作才华相结合,创造出引人入胜.感人至深或充满疯狂的微小说! 无论你是首次接触 AI 工具还是资深的从业者,我们期待在 ...
- Go/C++/Java中的数组对比
数组是大多数编程语言中的基本数据结构.然而,不同的编程语言对数组的实现和语义有所不同.以下是 Go.C++ 和 Java 中数组的主要区别: 1. 基本性质 Go: 数组是值类型.赋值或将数组传递给函 ...
- 《高级程序员 面试攻略 》RabbitMQ 如何实现可靠性
RabbitMQ 提供了多种机制来实现消息传递的可靠性.下面是一些常见的方法: 1. 持久化消息:RabbitMQ 允许将消息标记为持久化,以确保即使在发生故障或重启后,消息也不会丢失.通过将消息的` ...
- Java日志系列:Log4j使用和原理分析
目录 一.简介 二.使用 三.日志级别 四.组件说明 Loggers Appenders Layouts 五.配置 加载初始化配置 配置文件加载 查看日志记录器的详细信息 六.Layout的格式 七. ...
- 领域驱动设计(DDD):从基础代码探讨高内聚低耦合的演进
大家好,我是付威,一名已在编码第一线奋斗了十余年的程序员.在2019年我初次接触到领域驱动设计(Domain-Driven Design,简称DDD)的概念.在我的探索中,我发现许多有关DDD的教程过 ...