Java学习中位运算符底层运算过程
来源:互联网 发布:python socket 长度 编辑:程序博客网 时间:2024/06/06 09:48
以两个int型数据为例子,详细的描述它们之间进行& | ^操作的底层二进制运算过程,并分别对它们进行取反操作。
/** 两个int型数据进行& | ^操作,并对它们进行~ 底层二进制运算过程 取反:取反操作后,若为正数,变为负数,且数值比原来大1 若为负数,变为正数,且数值比原来小1*/public class BinaryTest { public static void main(String[] args) { //若为正数,前边的0可以省略,若为负数,不能省略 int 4字节 int a = 0xA9; //0000 0000 0000 0000 0000 0000 1010 1001 ->169 int b = 0xC7; //0000 0000 0000 0000 0000 0000 1100 0111 ->199 /* 0000 0000 0000 0000 0000 0000 1010 1001 a & (有0为0,与操作只有全为1才能得1) 0000 0000 0000 0000 0000 0000 1100 0111 b 0000 0000 0000 0000 0000 0000 1000 0001 ->0x81->129 */ System.out.println(a & b); /* 0000 0000 0000 0000 0000 0000 1010 1001 a | (有1为1,或操作只要有一个是1就得1) 0000 0000 0000 0000 0000 0000 1100 0111 b 0000 0000 0000 0000 0000 0000 1110 1111 ->0xEF->239 */ System.out.println(a | b); /* 0000 0000 0000 0000 0000 0000 1010 1001 a ^ (异或操作,只有不同时才得1,相同得0) 0000 0000 0000 0000 0000 0000 1100 0111 b 0000 0000 0000 0000 0000 0000 0110 1110 ->0x6E->110 */ System.out.println(a ^ b); /* 0000 0000 0000 0000 0000 0000 1010 1001 a ~ (按位取反,包括符号位) 1111 1111 1111 1111 1111 1111 0101 0110 -> 求值过程(底层保存为补码,负数求原码 先减一 --> 除符号位按位取反) 减一1111 1111 1111 1111 1111 1111 0101 0101 -> 取反1000 0000 0000 0000 0000 0000 1010 1010 ->0x8000 00AA->-170 (除符号位进行取反) */ System.out.println(~ a); /* 0000 0000 0000 0000 0000 0000 1100 0111 b ~ 1111 1111 1111 1111 1111 1111 0011 1000 -> 求值过程(底层保存为补码,负数求原码 先减一 --> 除符号位按位取反) 减一1111 1111 1111 1111 1111 1111 0011 0111 -> 取反1000 0000 0000 0000 0000 0000 1100 1000 ->0x8000 00C8->-200 */ System.out.println(~ b); /* 原码1000 0000 0000 0000 0000 0000 0000 0110 补码1111 1111 1111 1111 1111 1111 1111 1010 ~ 0000 0000 0000 0000 0000 0000 0000 0101 */ System.out.println(~ (-6)); // 5 若为负数,变为正数,且数值比原来小1 }}
2 0
- Java学习中位运算符底层运算过程
- Java位运算学习
- java学习-位运算
- 关于JAVA中位运算的学习
- Java学习基础:运算符和表达式(算数运算、关系运算、逻辑运算、位运算、条件运算、赋值运算)
- java学习笔记(位运算符 三元运算符)
- Java学习笔记(位运算符)
- 第十节 java学习 位运算符
- Java学习之位运算符
- java学习07--位运算符
- Java学习之-位运算符
- Java学习之位运算符
- Java学习——位运算符
- Java位运算符
- Java 位运算符
- Java 位运算符
- Java 位运算符
- Java 位运算符
- Codeforces698A Vacations
- 371. Sum of Two Integers
- RxJava入门第八、九问(二)
- html dl dt dd标签元素语法结构与使用
- jquery实现复选框的全选操作
- Java学习中位运算符底层运算过程
- H5游戏开发的架构总结(二) 服务器端
- SID是与系统运维
- 获取Http协议的请求行,请求头
- B - Bear and Three Balls(sort)
- MyBatis Generator产生的Example类
- 【Android】35、基本布局——RelativeLayout
- 添加鼠标事件侦听
- JAVA的基本数据类型