java基础03 位运算符
2017-03-25 10:49
162 查看
![](https://images2017.cnblogs.com/blog/1036590/201710/1036590-20171010203704590-2013847942.png)
![](https://images2015.cnblogs.com/blog/1036590/201703/1036590-20170325101038611-758949180.png)
![](https://images2015.cnblogs.com/blog/1036590/201703/1036590-20170325101120565-848146477.png)
位运算是对整数的二进制位进行相关操作,详细运算如下:
A | ~A |
1 | 0 |
0 | 1 |
A | B | A&B |
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
A | B | A | B |
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
A | B | A&B |
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
/** * 位运算 * @author sun * */ public class Bitoperation { public static void main(String[] args) { int a = 15; int b = 2; System.out.println(a + "&" + b + "=" + (a & b)); System.out.println(a + "|" + b + "=" + (a | b)); System.out.println(a + "^" + b + "=" + (a ^ b)); } }
运算结果如下:
15&2=2
15|2=15
15^2=13
程序分析:
a | 1 | 1 | 1 | 1 | 15 |
b | 0 | 0 | 1 | 0 | 2 |
a&b | 0 | 0 | 1 | 0 | 2 |
a|b | 1 | 1 | 1 | 1 | 15 |
a^b | 1 | 1 | 0 | 1 | 13 |
/** * 位运算 * * @author sun * */ public class Bitoperation { public static void main(String[] args) { /* 符号位:最高位同时表示符号位,0为正数,1为负数 */ /* 1、二进制转换为十进制 二进制转换为10进制的规律为: 每位的值 * 2的(当前位-1次方) 例如: 00000001 = 0 * 2^7 + 0 * 2^6 + 0 * 2^5 + 0 * 2^4 + 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = 1 00000010 = 0 * 2^7 + 0 * 2^6 + 0 * 2^5 + 0 * 2^4 + 0 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0 = 2 2、二进制的符号位: 最高位表示符号位,0表示正数 , 1表示负数 3、将二进制负数转换为十进制:先对该二进制数取反,然后加1,再转换为十进制,然后在前面加上负号 例如: 10101011 最高位为1,所以为负数 第一步:取反: 01010100 第二步:加1 : 01010101 第三步:转换为10进制:85 第四步:加上负号: -85 所以 10101011 转换为十进制为 -85 4、将十进制负数转换为二进制:先得到该十进制负数的绝对值,然后转换为二进制,然后将该二进制取反,然后加1 例如:-85 第一步:得到绝对值 85 第二步:转换为二进制:01010101 第二步:取反: 10101010 第三步:加1: 10101011 所以,-85转换为二进制为 10101011 */ /* ~ ‘非’ 运算符是将目标数的进制去反,即0变成1 ,1变成0 2的二进制码为 00000010 , 它取反为11111101 ,可见取反后结果为负数(二进制负数转换为十进制的步骤为:将二进制去反,然后+1) 将 11111101 转换为10进制 ,第一步去反 得到 00000010 然后 加1 得到 00000011 ,得到的结果为3 ,然后在前面加上负号就可以了 所以结果为-3 */ System.out.println(~2); /* ^ 异或 ,计算方式为:两个二进制数的位相同则为0 不同则为1 23转换为二进制为:00010111 12转换为二进制为:00001100 计算结果为:00011011 = 27 */ System.out.println(23 ^ 12); /* & 按位与 ,计算方式为:两个二进制数的位都为1则为1 ,否则为0 1的二进制为 :00000001 2的二进制为 :00000010 结果为 :00000000 = 0 */ System.out.println(1&2); /* | 按位或 ,计算方式为:两个二进制位有一个为1就为1,否者为0 5 的二进制为:00000101 6 的二进制为:00000110 结果为:00000111 = 7 */ System.out.println( 5 | 6); /* >> 有符号右移位 ,符号左边表示要被移位的数,右边表示需要移的位数,结果为正数则在左边补0,否则补1 3 的二进制为:00000010 向右移动1位:00000001 = 1 */ System.out.println(3 >> 1); } }
相关文章推荐
- Java语言基础18-多功能运算符
- Java基础:第十讲 基本运算——运算符
- Java基础程序设计笔记-- 运算符、表达式与语句
- Java基础学习笔记(一)环境变量配置,数据类型,运算符,控制语句,循环语句
- Java语言基础——运算符
- Java基础学习2--数据类型与运算符
- 黑马程序员_Java基础_常用基础内容(进制转换、基本数据类型、运算符、流程控制语句等)
- 黑马程序员——java基础变量和运算符——第二篇
- Java 入门(二)数据类型 运算符 表达式 -------程序设计的静态基础
- (java基础)java运算符
- 第2章 Java编程基础——FAQ2.15 Java中有哪些运算符?优先级如何?
- Java基础番外篇:自增和自减运算符
- Java基础:Java运算符
- Java语言基础--基本数据类型与运算符
- java基础学习 视频学习 数据类型以及运算符
- [零基础学JAVA]Java SE基础部分-03. 运算符和表达式
- java基础复习--数据类型、运算符、程序结构
- Java 基础运算符
- java基础---->数据类型、运算符、程序控制
- java基础---->数据类型、运算符、程序控制