xugesen1989 2015-10-15 09:10 采纳率: 83.3%
浏览 2071

十进制数转为二进制,再将二进制反转,在转换为十进制

#include
using namespace std;
void ReverseArr(int n)
{
int m=n;
int x,count;
int i=0;
char a[20],b[20];
for(int a1=0;a1 {
a[i]=0;
b[i]=0;
}
if(m return;
if(m>=0)
{
while(m!=0)
{
x=m%2;
m=m/2;
a[i]=x;
i++;
}
}
count =i;
while(i>0)
printf("%d",a[--i]);
printf("\n");
while(i {
int j=0;
b[j]=a[i++];
printf("%d",b[j]);
j++;
}
printf("\n");
int sum=0;
for(int i1=count-1;i1>=0;i1--)
{
sum*=2;
sum+=b[i1]-'0';
}
printf("%d",sum);
printf("\n");
}

int main()
{
int n;
cin>>n;
ReverseArr(n);
return 0;
}
输入8
输出:
1000
0001
1
在最后转换为十进制的时候输出却是-1447
求解答

  • 写回答

1条回答 默认 最新

  • yangbo50304 2015-10-15 09:48
    关注
     void ReverseArr(int n)
    {
        int m=n;
        int x,count;
        char a[20],b[20];
        for(int a1=0;a1 < 20; a1++)
        {
            a[a1]=0;
                b[a1]=0;
        }
        if(m < 0)return;
    
        int i=0;
        if(m>=0)
        {
            while(m!=0)
            {
                x=m%2;
                m=m/2;
                a[i]=x;
                i++;
            }
        }
        count =i;
        while(i>0)
            printf("%d",a[--i]);
        printf("\n");
        int j=0;
        while(i < 20)
        {
            b[j]=a[i];
            printf("%d",b[j]);
            j++;
            i++;
        }
        printf("\n");
        int sum=0;
        for(int i1=count-1;i1>=0;i1--)
        {
            sum*=2;
            sum+=b[i1];
        }
        printf("%d",sum);
        printf("\n");
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘