> 文档中心 > 位运算的基本规则特点、A和B交换、二进制中第X的值、求绝对值

位运算的基本规则特点、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)));    }}

尽量不要用中文名,驼峰原则规范命名!!