java基础-位运算符
1.位运算符
<< 左移 : 右边以0填充
>> 带符号右移: 负数前面补1,整数补0
>>>不带符号右移
& 按位与运算
| 按位或运算
^按位异或
~按位取反
^按位异或
/*
演示位运算
<< : 左移,右边以0填充
*/
public class BitDemo{
public static void main(String[] args){
int i = 3;
System.out.println(i << 2); System.out.println(-128 >> 1);
System.out.println(-128 >> 2); System.out.println("-----------------");
System.out.println(-128 >>> 1);//
System.out.println(-128 >>> 2);// }
}
/*
有符号,无符号右移 & : 按位与
| : 按位或
^ : 按位异或
*/
public class BitDemo2{
public static void main(String[] args){
// int i = -128;
// System.out.println(i >> 2);
// System.out.println(i >>> 2); int min = Integer.MIN_VALUE;
// System.out.println(min << 11); // System.out.println(6 & 12);//4
// System.out.println(128 & -1);
// System.out.println(0 & -1);
// System.out.println(-1 & 0); // System.out.println(6 | 3);
// System.out.println(-128 | -1);
// System.out.println(-1 | 0);
// System.out.println(-1 | -1); // System.out.println(6 ^ 3);//5 // System.out.println(min ^ -1);
// System.out.println(~min);
// System.out.println(~1);//-2 }
}
/*
异或运算的简单应用
1.不使用第三方变量交换两个变量的值
异或运算规律:
两个数异或的结果和其中的一个数再次异或,得到另一个数. 2.简单加密 */
public class BitDemo3{
public static void main(String[] args){
//使用第三方变量交换两个变量的值
// int a = 10;
// int b = 20;
// System.out.println("交换前 :a = " + a + ",b = " + b);
// //定义临时变量
// int temp = a;
// a = b;
// b = temp;
// System.out.println("交换后 :a = " + a + ",b = " + b); //两个数异或的结果和其中任意一个数再次异或,得到另外一个数
// int a = 20;
// int b = 10;
// System.out.println(a ^ b ^ a);// 相当于 b^a^a 将得到 b //使用异或交换两个变量值
// int a = 10;
// int b = 20;
// System.out.println("交换前 :a = " + a + ",b = " + b);
// a = a ^ b;//
// b = a ^ b;//得到的是原来的a
// a = a ^ b;//用两个数异或的结果,和原来的a进行异或,得到原来的b
// System.out.println("交换后 :a = " + a + ",b = " + b); //使用和的方式交换两个变量
// int a = 10;
// int b = 20;
// System.out.println("交换前 :a = " + a + ",b = " + b);
// a = a + b;
// b = a - b;
// a = a - b;
// System.out.println("交换后 :a = " + a + ",b = " + b); //一条语句交换两个变量的值
// int a = 10;
// int b = 20;
// System.out.println("交换前 :a = " + a + ",b = " + b);
// b = (a + b) - (a = b);
// System.out.println("交换后 :a = " + a + ",b = " + b); //简单加密
int m = 2000;
int key = 23;
m = m ^ key;
System.out.println(m);
System.out.println(m ^ key);
}
}
/*
位运算规律
在不发生有效位丢失,和符号位改变的情况下,左移相当于乘以2的n次幂
右移相当于除以2的n次幂 移动的位数超过32.实际移动的位数是和32的余数 */
public class BitDemo4{
public static void main(String[] args){
int i = 128;
// System.out.println(i << 23);//
// System.out.println(i << 24);//
// System.out.println(i << 25);// // System.out.println(i << 32); //32 % 32 == 0 相当于没有移动
// System.out.println(i << 63); //63 % 32 = 31
// System.out.println(i << 56); //56 % 32 == 24
// System.out.println(2 >> 33); //33 % 32 == 1,相当于往右移动一位
// System.out.println(3 >> 32); //相当于没有移动 }
}
java基础-位运算符的更多相关文章
- Java基础-位运算符Bitwise Operators
Java基础-位运算符Bitwise Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.位运算特点 位运算符分为按位与(&),按位或(|),按位异或(^ ...
- 恶补java基础 位运算符
以前不知道在哪看过别人写博客里的一句话 “越学的深入觉得自己会的东西越少”.最近研究了一下java的基础算法 hash表 被一些位运算符搞的头都大了 决心花一些时间研究一下以前一直觉得没用的东西! ...
- Java基础-算术运算符(Arithmetic Operators)
Java基础-算术运算符(Arithmetic Operators) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java程序通过运算符实现对数据的处理,Java中的运算符包括: ...
- Java的位运算符实例——与(&)、非(~)、或(|)、异或(^)
一.Java的位运算符实例——与(&).非(~).或(|).异或(^) 1.与(&) 0 & 2 = 0 0 0 0 0 1 0 0 1 0 2.非(~) ~0 = 7 0 0 ...
- Java基础-比较运算符Compare Operators
Java基础-比较运算符Compare Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关系运算符 关系运算符包括: 1>.大于(>) 2> ...
- java 基础one ---运算符and流程控制
首先java这个了解下java的基础 首先java文件都是以.java结尾的 然后 他所有的内容都是有一个入口的就是放在了public static void main(String [] args ...
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面 ...
- 再回首,Java温故知新(七):Java基础之运算符
常规算数运算符 包括+.-.*./.%分别对应着加.减.乘.除.取余,算数运算符所处理的两个数字必须为同种类型,如果是不同类型且无法进行自动类型转换的话必须进行强制类型转换,不过强制类型转换可能会丢失 ...
- Java中位运算符的使用
先预知识: 数据在计算机中是以二进制的形式进行存储的,而二进制在内存中是以补码的形式进行存储的.在介绍位运算之前,首先来看一下原码.反码和补码的概念.由于正数的原码.反码和补码的形式都是一样的,所以以 ...
随机推荐
- android 开发 View _11_ xml动画
请大家尊重原创者版权,转载请标明出处:http://blog.csdn.net/harvic880925/article/details/39996643 谢谢! 一.概述 Android的anima ...
- python3 不知文件编码情况下打开文件代码记录
import chardet path='test.txt' bytes = min(100, os.path.getsize(path)) raw = open(path, 'rb').read(b ...
- oracle instantclient + plsql 远程连接数据库
PLSQL Developer连接数据库: 1.不连接数据库登陆PLSQL Developer(登陆界面按“取消”即可).在Tools->Perferences->Connection ...
- html:class名命名规范
1 前端开发命名规范 1.1 为什么要制定CSS命名规范 统一的命名规范,便于多人开发维护时代码统一,减少项目沟通和交接的成本,增加代码的语义化. 1.2 CSS命名规则 样式类名全部用小写,首字符必 ...
- [译]与TensorFlow的第一次接触(三)之聚类
转自 [译]与TensorFlow的第一次接触(三)之聚类 2016.08.09 16:58* 字数 4316 阅读 7916评论 5喜欢 18 前一章节中介绍的线性回归是一种监督学习算法,我们使用数 ...
- 前端 跨Area后Cookie无法访问
创建两个区域,一个是User,一个是Manage. User区域有两个页面,index1,和index2 User区域: index1:负责写入cookie index2:负责读取cookie Man ...
- 2019/1/15 python基础学习
一.列表切片a.快捷方式:spam[:3] ----表示从列表开始到3位置结束:拿到的内容是0,1,2没有3位置上的数字.spam[3:]b.列表的拼接.复制: 拼接:使用 + [1,2,3]+['A ...
- C# 字符串 输出格式 指定间隔 通用性很强
C#winform string s = "FE 68 01 00 1111 11 11 68 1104 35 33B337 7C 16"; string r = Regex.Re ...
- TP-Link 路由器配置 config.bin 解密工具 python 代码 (转载)
转自吾爱破解 https://www.52pojie.cn/forum.php?mod=viewthread&tid=574222 需要安装crypto #!/usr/bin/env pyth ...
- django 数据库配置 ,APP 迁移.模型基础
# 1.数据库的连接配置django 连接mysql的配置流程:- 安装 pymysql pip install pymysql- 创建数据库用户有创建数据库权限的用户- 创建数据库crm .进入数据 ...