very_vv 2022-03-07 15:21 采纳率: 0%
浏览 709

c语言代码:将任意十进制整数(包括负数)转化为二进制数

c语言代码:将任意十进制整数(包括负数)转化为二进制数,求解决。。

  • 写回答

3条回答 默认 最新

  • 关注

    负数是在正数的基础上取反再+1
    整数按32位处理,正数转换结果:

    img


    负数转换结果:

    img

    代码如下:

    #include <stdio.h>
    
    //将正整数转换为二进制(32位)
    void trans(int n,char buf[])
    {
        int i=0;
        for(i=0;i<32;i++)
            buf[i]='0';
        i=31;
        while(n)
        {
            buf[i]=n%2+'0';
            i--;
            n/=2;
        }
    }
    
    int main()
    {
        int n,i,flag=1;
        char buf[33]={0};
        printf("请输入一个数:");
        scanf("%d",&n);
        if(n>=0)
            trans(n,buf);
        else
        {
            trans(-n,buf);
            //取反
            for(i=31;i>=0;i--)
            {
                //取反
                if(buf[i]=='0')
                    buf[i]='1';
                else 
                    buf[i] = '0';
            }
            //+1
            for(i=31;i>=0;i--) //flag表示进位
            {
                if(flag==1 && buf[i]=='1')
                {
                    buf[i]='0';
                    flag = 1;
                }else if(flag==1 && buf[i]=='0')
                {
                    buf[i]='1';
                    flag = 0;
                }else if(flag==0 && buf[i]=='0')
                {
                    buf[i]='0';
                    flag = 0;
                }else
                {
                    buf[i]='1';
                    flag = 0;
    
                }
            }
            
        }
        printf("%s",buf);
        return 0;
    
    }
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月7日

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试