| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1272 人关注过本帖
标题:c:十进制转换二进制
只看楼主 加入收藏
人_神
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:44
专家分:103
注 册:2013-8-1
结帖率:100%
收藏
已结贴  问题点数:2 回复次数:9 
c:十进制转换二进制
//十进制转换二进制
#include <stdio.h>
int main ()
{
/*    int data,i;
    printf("输入整数:");
    scanf("%d",&data);
    for (i=0;i<33;i++)
    {
        data & 1<<(32-i) ? printf("1") : printf("0");
    }
    printf("\n");
*/
    int data,i,j,sum1=1,sum2=1;
    printf("输入整数:");
    scanf("%d",&data);
    switch (data)
    {
        case 0: for (i=0;i<32;i++)
                printf("0");
            printf("\n");break;
        case 1: for (i=0;i<31;i++)
                printf("0");
            printf("1\n");break;
        default:
        for (i=0;sum1<=data;i++)
            sum1 *= 2;
        for (j=i;j<32;j++)
            printf("0");
        if (sum1==data)
        {
            printf("1");
            sum1=0;
        }
        else
        {
            sum1 = data - sum1/2;
            printf("1");
        }
        for (i=i-1,sum2=1;i>1;i--)
        {
            for (j=1;j<i;j++)
            {
                sum2 *= 2;
            }
            if (sum1>=sum2)
            {
                printf("1");
                sum1 -= sum2;
            }
            else
                printf("0");
        }
        if (sum1)
            printf("1");
        else
            printf("0");
        printf("\n");
    }
    return 0;
}
输入10,输出2进制是错的,输入7,输出2进制是对的。为什么?求指教
搜索更多相关主题的帖子: include 二进制 十进制 
2013-08-02 21:31
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
分太少

ps: 一个进制转换问题 能用这么多代码   太奢侈了

DO IT YOURSELF !
2013-08-02 21:32
人_神
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:44
专家分:103
注 册:2013-8-1
收藏
得分:0 
我是新手,还不能熟练运用位运算符,还请多指教。
2013-08-02 22:40
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:1 
十进制转二进制,你先拿个笔和纸把十进制不停的除2下去余0就是0,1就是1
然后不用sdk提供的函数话,用循环加/除号和%除余号就可以了

你先确定下十进制转二进制原理
2013-08-02 22:45
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:1 
回复 3楼 人_神
进制转换涉及到移位?
你代码的逻辑是怎样的?能写出来看看吗?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-08-03 06:53
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
我这有一段10进制转任意进制的代码(自己以前写的)
程序代码:
#include <stdio.h>
#include <string.h>

//10进制转任意进制
//函数由调用者申请内存
int index=0;
void dec2yyy(int yyy,int source,char* bin)
{
    if(source==0) return;
    dec2yyy(yyy,source/yyy,bin);
    if((source%yyy)<10) bin[index]=(char)(source%yyy+0x30);
    else bin[index]=(char)(source%yyy+0x37);
    index++;
}


int main (int argc, char *argv[])
{
    //下面以2-8-16进制为代表进行演示
    int testdata=123456789;
    char dest[100]={'\0'};
    //10转2
    dec2yyy(2,testdata,dest);
    printf("原始数据(10)进制%d=转换后进制(2)%s\n",testdata,dest);
    //10转8
    memset(dest,0,sizeof(dest));
    index=0;
    dec2yyy(8,testdata,dest);
    printf("原始数据(10)进制%d=转换后进制(8)%s\n",testdata,dest);
    //10转16
    memset(dest,0,sizeof(dest));
    index=0;
    dec2yyy(16,testdata,dest);
    printf("原始数据(10)进制%d=转换后进制(16)%s\n",testdata,dest);
    return 0;
}
//输出示例
/*
原始数据(10)进制123456789=转换后进制(2)111010110111100110100010101
原始数据(10)进制123456789=转换后进制(8)726746425
原始数据(10)进制123456789=转换后进制(16)75BCD15
*/



DO IT YOURSELF !
2013-08-03 07:30
人_神
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:44
专家分:103
注 册:2013-8-1
收藏
得分:0 
根据定义。如 10=1*2^3+0*2^2+1*2^1+0*2^0
权重:1   0   1   0
 10-8=2    2-2=0
10转2:有权添一,无权补0
2013-08-03 23:42
逆风而前
Rank: 7Rank: 7Rank: 7
来 自:福建
等 级:黑侠
威 望:7
帖 子:193
专家分:567
注 册:2013-2-14
收藏
得分:0 
#include<stdio.h>
void main(void)
{
    void calculate(int a);
    int num10;
    printf("请输入一个十进制数:");
    scanf("%d",&num10);
    calculate(num10);
}
void calculate(int a)
{
    int b,c;
    c=a%2;
    b=a/2;
    if(b!=0)
    {
      calculate(b);
    }
    printf("%d",c);
}
2013-09-06 19:44
小男孩的围裙
Rank: 2
等 级:论坛游民
帖 子:15
专家分:32
注 册:2013-4-24
收藏
得分:0 
回复 8楼 逆风而前
能看得懂,但是有些地方不明白,求解释下。
例如输入10,c依次得到的应该是0101,为什么在后面输出的时候会倒序成1010了。
帮忙解惑下,谢谢。
2013-09-06 20:53
人_神
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:44
专家分:103
注 册:2013-8-1
收藏
得分:0 
递归运算,如果不明白可以查看书中的先相关只是
2013-09-08 13:59
快速回复:c:十进制转换二进制
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017062 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved