用java实现 DES算法碰到的问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 10:56:11
其中 的位与位之间的 置换 应该怎样写?
大哥 我说的是位 操作 比如一个byte 是8位 一个数 00100000现在我想将他的第6位 也就是那个1 和它的第一位 0 置换 换过之后 就是00000001 是这个意思

没找到api提供的方法,

class Test{
static public void main(String[] str){
int a=0x20,b,temp;
int[] ai=new int[8];

for(int i=0;i<8;i++){
ai[i]=(a>>i)%2;
//System.out.println(ai[i]);
}
temp = ai[0];
ai[0] = ai[5];
ai[5] = temp;
b = ai[7];
for(int i=6;i>=0;i--){
b=(b<<1)+ai[i];
//System.out.println(ai[i]);
}
System.out.println(Integer.toBinaryString(a)+" "+Integer.toBinaryString(b));
}
}

位操作 ^=按位异或

class Test{
static public void main(String[] str){
int b=32;//00100000
int a=33;//00100001
int x=(int)(b ^ a );//按位异或00100000 ^ 00100001=00000001 即 1
System.out.println(x);

}

}

public class Test
{
public static void main(String[] args)
{
int a=0x20; //a等于0010 0000
a=a|0x01; //a或上0000 0001,只改变a的最低位,即用原来a第6位的1替换最低位的0
a=a&0x