请问用主流编程语言(C++、C#、JAVA、Python等)实现负数转换成补码时进位逻辑
都说开会员有专家24小时内解答,这都两天了,算了!
自问自答吧:负数补码,是反码加1,负数进位是从二进制最最末端考虑,逢0变1结束,逢1变0看前位;
有两种思路:
一、采用多个数组,用反码数组,作比较,来改变补码数组的状态;
二、一个数组时,采用冒泡排序思路,倒叙比较;
代码如下:
C语言实现思路一:
for(int i=7;1>0;i--){
if(arr2[i]==0){
arr3[i]==1;
break;
}else{
arr3[i]==1;
}
}
C语言实现思路二:
arrays_length=7;
if(*(array + arrays_length)==0){
*(array + arrays_length)=1;
}
else if(*(array + arrays_length)==1){
for (int i = arrays_length; i >0 ; i--) {
if(array[i]==1&&array[i-1]==0){
*(array + i)=0;
*(array + i-1)=1;
break;
} else if(array[i]==1&&array[i-1]==1){
*(array + i)=0;
*(array + i-1)=0;
} else if(array[i]==0&&array[i-1]==1){
*(array + i)=0;
*(array + i-1)=0;
}else if(array[i]==0&&array[i-1]==0){
*(array + i)=0;
*(array + i-1)=1;
break;
}
}
}
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。