位运算的基本规则特点、A和B交换、二进制中第X的值、求绝对值
1.与:都为1结果为1 &
2.或:有一个为1结果为1 |
3.异或:两者不同时结果为1 ^
-
任意整数与1与操作&,可以判断奇偶性,结果为0为偶数,结果为1为奇数,因为二进制偶数最后一位为零。
-
异或满足交换律和结合律
-
对于任何数x,都有x^x=0, x^0=x,异或是相同为零,同零异或等于自己
-
A^B^B=A^0=A,连续和同一个因子做异或等于本身
4.左移运算符(<<)
对于int型数模为32,1<<35与1<<3是相同的,long型数模为64
定义:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
设 a=1010 1110,a = a<< 2 将a的二进制位左移2位、右补0,即得a=1011 1000。
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。
5.右移运算符(>>)
定义:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
例如:a=a>>2 将a的二进制位右移2位,左补0 或者 左补1得看被移数是正还是负。
6.>>>不带符号右移,没有<<<符号
7.例题
位运算——A和B数值交换
public class A和B数值交换 { public static void main(String[] args) { int A = 10; int B = 20; A=A^B; B=A^B; A=A^B; System.out.println("A="+A); System.out.println("B="+B); }}
位运算——二进制中第X的值
public class 二进制中第X位的值 { public static void main(String[] args) { int a = 16; System.out.println(a+"的二进制第五位值是"+(((a&(1<>4)==0?"0" :"1")); System.out.println(a+"的二进制第五位值是"+((1&(a>>4))==0?"0":"1")); }}
位运算——求绝对值
public class 求绝对值 { public static void main(String[] args) { int C = -8; System.out.println(C+"的绝对值是"+((C^(C>>31))+(C>>>31))); }}
尽量不要用中文名,驼峰原则规范命名!!