| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7692 人关注过本帖
标题:十进制数转换成二进制数。。
只看楼主 加入收藏
dan1315
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2009-8-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
十进制数转换成二进制数。。
刚学到“二进制”。搞了很久才明白。二进制是什么意思。。二进制数转换成十进制数也转得来了。。
就是十进制数转二进制数就。。。。
小一点的数还好说。。大一点我就有点勉为其难了。。
不知各位大大们有没有窍门之类的。。
我整了半天也没点头绪。。
希望各位帮帮我。。
在此,感激不尽。。
搜索更多相关主题的帖子: 二进制数 十进制 
2009-09-04 07:42
yuehai1117
Rank: 2
等 级:论坛游民
帖 子:8
专家分:16
注 册:2009-9-4
收藏
得分:10 
十进制转化成二进制啊,这个可以用除二余数法来解决,举例说明一下吧。
比如将十进制1000转化为二进制
1000/2  结果的整数部分是500    余数是0
500/2                   250          0
250/2                   125          0
125/2                   62           1
62/2                    31           0
31/2                    15           1
15/2                    7            1
7/2                     3            1
3/2                     1            1
1/2                     0            1
最后将所有的余数从下到上连起来就是了,结果就是1111101000
这是二进制转化,八进制,十六进职业一样,不过除数换一下就是了。
2009-09-04 08:12
dan1315
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2009-8-26
收藏
得分:0 
我想问下。。大大。。最后只有1了。还要除2嘛,,为什么。我算到这一步就没算下去了。。。。请给我讲讲。。谢谢
2009-09-04 20:32
hjay12345
Rank: 1
等 级:新手上路
帖 子:20
专家分:5
注 册:2009-6-14
收藏
得分:5 
按步骤来啊!直到商是0     还有小数部分,是按照乘2取整法,
比如0.5
            取整后剩余的      整数
0。5*2       0                 1
所以表示为 0.1(注意这是二进制)
但是有的数根本乘不完,那只有按照所要的精度取合适的位数了
2009-09-04 20:46
Real830
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2009-9-4
收藏
得分:5 
看这个简单:
从右往左 2倍数字(二进制嘛,封2进1);
...1024   512   256   128   64   32   16  8   4   2   1
           1     1     1     1    1   0   1   0   0   0
512+256+128+64+32+8=1000
所以成2进制就是1111101000。
2009-09-05 19:46
dan1315
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2009-8-26
收藏
得分:0 
二楼的大大。说得太对了。。。
2009-09-05 20:29
喜喜
Rank: 2
来 自:武汉
等 级:论坛游民
帖 子:31
专家分:35
注 册:2009-7-28
收藏
得分:0 
程序实现不好弄吧!
2009-09-05 21:56
choco1024
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:183
专家分:140
注 册:2008-8-31
收藏
得分:0 
好好想也没多少难度,用堆栈就能完成,下面是我写的代码,大家共同参考了。
#include <stdio.h>
void former(int a);   /*转换整数部分二进制*/
void later(float b);  /*转换小数部分二进制*/

void main()
{
   
    float b, n;
    int a;

    printf("Input the number:");
    scanf("%f",&n);//输入需要转换的十进制数

    printf("二进制数为:");
    a = (int)n;   //取整数部分
    b = n - a;    //取小数部分

    if (a == 0)
    {
        printf("0.");
        later(b);
    }
    else
    {
        former(a);
        printf(".");
        later(b);
    }
    printf("\n");
}

/*转换整数部分二进制*/
void former(int n)
{
    if ( n!= 0)
    {   
        former(n / 2);
        printf("%d",n % 2);
    }
}

/*转换小数部分二进制*/
void later(float p)
{
    int q,i;
    for (i = 0; i < 10; i++)
    {
        q = int(p * 2);
        p = p * 2 - q;
        printf("%d",q);

        if (p == 0)
        {
            break;
        }
    }
}
2009-09-05 23:35
caili_xi
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-12-28
收藏
得分:0 
楼上高手
2012-02-24 15:15
孤寂丶秋香。
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-10-8
收藏
得分:0 
回复 3楼 dan1315
1就不用算了,得数重那个1开始算。
2013-10-08 17:47
快速回复:十进制数转换成二进制数。。
数据加载中...
 
   



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

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