62,623
社区成员
发帖
与我相关
我的任务
分享//无符号不算最高位的加法,其它的也可以实现吧,减法等于加上它的补码,LZ要几倍都行
public class Main {
public static long sum(long a,long b){
long c=0;
long bf1=0x0001,bf=0;
byte jw=0;
for(int i=0;i<Long.SIZE;i++){
long ai=a&(0x0001<<i);
long bi=b&(0x0001<<i);
if(ai>0){//1 //为了方便理解用if,不用?:运算
if(bi>0){//1
if(jw>0){//1
jw=1;
bf|=0x0001<<i;//确定第i位为1,进1
}else{
jw=1;//确定第i位为0//进1
}
}else{//0
if(jw>0){//1
jw=1;//确定第i位为0//进1
}else{
jw=0;
bf|=0x0001<<i;//确定第i位为1,进0
}
}
}else{//0
if(bi>0){//1
if(jw>0){//1
jw=1;//确定第i位为0//进1
}else{
jw=0;
bf|=0x0001<<i;//确定第i位为1,进0
}
}else{//0
if(jw>0){//1
jw=0;
bf|=0x0001<<i;//确定第i位为1,进0
}else{
jw=0;//确定第i位为0//进0
}
}
}
}
return bf;
}
public static void main(String[] args) throws FileNotFoundException {
System.out.println(""+sum(20, 111));
}
}