java位操作、BitSet例程

public class BitMover {
	//交换一个字节高四位与低四位的位置
	public static byte swap(byte b){
		int lowBits=b&0xF;//获得低4位
		int highBits=b&0xF0;//获得高4位
		//把低4位左移4位变成高4位
		//把高4位无符号右移4位变成低4位
		//再把两者进行位或
		int result=(lowBits<<4)|(highBits>>>4);
		return (byte)result;//截取int型数据后8位
	}
	public static void main(String[] args) {
		System.out.println(swap((byte)10));
		System.out.println(swap((byte)1));
		System.out.println(swap((byte)-1));//在内存中要以补码运算
		System.out.println(Integer.toBinaryString(-1));
	}
}


import java.util.BitSet;
public class Testyunsuanfu {

	public static void main(String[] args) {
		int a=-2;
		int b=3;
		System.out.println(Integer.toBinaryString(a));
		System.out.println(Integer.toBinaryString(b));
		System.out.println("a&b=>"+Integer.toBinaryString(a&b)+":"+(a&b));//按位与
		System.out.println("a^b=>"+Integer.toBinaryString(a^b)+":"+(a^b));//按位异或
		boolean f=false;
		boolean t=true;
		System.out.println("f&t=>"+(f&t));//逻辑与
		
		int c=0xf;//注意是零xf
		System.out.println("c=>"+Integer.toBinaryString(c));
		System.out.println("c=>"+c);
		
		int g=0xf0;
		byte bt=12;
		System.out.println("bt的二进制:"+Integer.toBinaryString(bt));
		System.out.println("bt的高4位:"+Integer.toBinaryString(g&bt));
		System.out.println("g=>"+Integer.toBinaryString(g));
		System.out.println("g=>"+g);
		
		BitSet bt1=new BitSet(4);//创建一个长度为4的位"数组",0至长度减1
		BitSet bt2=new BitSet(6);
		bt1.set(1);//第1位设为true
		bt1.set(3);
		bt2.set(0);
		bt2.set(3);
		bt2.set(5);
				//输出原来的bitSet
		for(int i=0;i<bt1.length();i++){
			System.out.print(bt1.get(i)+" ");
			if(i==bt1.length()-1){System.out.println();}
		}
		for(int i=0;i<bt2.length();i++){
			System.out.print(bt2.get(i)+" ");
			if(i==bt2.length()-1){System.out.println();}
		}
		System.out.println("bt1=>"+bt1);
		System.out.println("bt2=>"+bt2);
		(bt1).or(bt2);
		//bt1执行了或之后结果保存在bt1中
		System.out.println("(bt1).or(bt2)=>"+bt1);
		//输出执行了or之后的bitSet
		for(int i=0;i<bt1.length();i++){
			System.out.print(bt1.get(i)+" ");
			if(i==bt1.length()-1){System.out.println();}
		}
		
		for(int i=0;i<bt2.length();i++){
			System.out.print(bt2.get(i)+" ");
			if(i==bt2.length()-1){System.out.println();}
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程猿薇茑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值