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();}
}
}
}