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 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献