位运算

&(按位与) :
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
|(按位或):
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
~ (按位取反) :
运算规则:~1=0; ~0=1;
位同或运算:两个数转为二进制,然后从高位开始比较,如果相同则为1,不相同则为0
^(按位异或)
位异或运算:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1
两个相同的数异或为0
0 与 1 个数进行异或结果都是该数本身
java中并没有同或运算符,可以通过异或转换得到。同或运算 = 异或运算 ^ 1

```java 
import java.util.Scanner; 
public class problem7 { 
		/** * @param args */
	public static void main(String[] args) { 
		// TODO Auto-generated method stub 
		Scanner sc = new Scanner(System.in); 
		String strA = sc.nextLine();
		String strB = sc.nextLine();
		byte[] byteA = strA.getBytes(); 
		byte[] byteB = strB.getBytes();
		for( int i = 0 ; i < byteA.length ; i++ ){
			 int ad = ((byteA[i]-'0')^(byteB[i]-'0')) ^ 1;
			System.out.print(ad); 
		} 
	} 
}

按位异或就是无进位的加法 , 而与运算产生进位
附上Leetcode题 :

两整数之和

实现 :

class Solution {
    public int getSum(int a, int b) {
        if (a == 0) return b;
        if (b == 0) return a;
        return getSum(a ^ b, (a & b) << 1);
    }
}

另外 ,补充一下java输出:
① d格式符 用来输出十进制整数
② o格式符 以八进制形式输出整数
③ x格式符 以十六进制形式输出整数
输出二进制调用 Integer.toBinaryString 方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值