| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1233 人关注过本帖
标题:新人求教十进制转二进制如何扩大可执行数的范围
只看楼主 加入收藏
谢晓乐
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-8-5
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
新人求教十进制转二进制如何扩大可执行数的范围
代码如下,但一定还有不完善、效率低的地方,希望大神能指教。
还有输入的数是有范围的,如何用一些方法手段让他可以计算更大的数啊?
不胜感激了

程序代码:
#include<stdio.h>
void binary(long long int a);
main()
{
    long long int a;
    for (;;)
    {
        printf("Please input the number\n");
        scanf_s("%ld", &a);
        printf("In Binary System:\n");
        binary(a);
        printf("\n");
    }
}
void binary(long long int a)
{
    long long int remain;
    if (a == 0 || a == 1)
        printf("%ld", a);
    else
    {
        remain = a;
        a /= 2;
        binary(a);
        printf("%ld", remain % 2);
    }
}





[此贴子已经被作者于2016-12-5 23:47编辑过]

搜索更多相关主题的帖子: 十进制 二进制 不胜感激 如何 
2016-12-05 23:35
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
用数组看看~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-05 23:40
谢晓乐
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-8-5
收藏
得分:0 
回复 2楼 九转星河
请问怎么弄呀,毫无思路?
2016-12-05 23:41
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
#include <stdio.h>

char *binary(unsigned long long int value, char *string)
{
    if (value == 0)
    {
        *string = '0';
        *(string+1) = 0;
        return string;
    }
    char *p1=string, *p2;
    for(; value>0; value/=2)
        *p1++ = '0'+value%2;
    *p1 = 0;
    p2 = --p1;
    p1 = string;
    for(; p1<p2; p1++, p2--)
    {
        *p1 ^= *p2;
        *p2 ^= *p1;
        *p1 ^= *p2;
    }
    return string;
}

main ()
{
    char s[130];
    printf("3456(10) == %s(2)\n", binary(3456, s));
    printf("-3456(10) == %s(2)\n", binary(-3456, s));
    printf("1(10) == %s(2)\n",  binary(1, s));
    printf("-1(10) == %s(2)\n", binary(-1, s));
}
2016-12-06 00:09
谢晓乐
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-8-5
收藏
得分:0 
回复 4楼 吹水佬
膜拜大神,新人还一点儿都看不懂呢😂😂😂,那个^运算符表示从没接触过,准备再仔细琢磨琢磨,谢谢耐心的解答!
2016-12-06 00:21
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:10 
回复 5楼 谢晓乐
^是按位异或
*p1 ^= *p2;
*p2 ^= *p1;
*p1 ^= *p2;
结果是p1与p2的值交换
相当于:
tmp = *p1;
*p1 = *p2;
*p2 = tmp;

2016-12-06 08:32
谢晓乐
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-8-5
收藏
得分:0 
回复 6楼 吹水佬
喔喔喔,是这样啊,谢谢啦!
2016-12-06 09:35
快速回复:新人求教十进制转二进制如何扩大可执行数的范围
数据加载中...
 
   



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

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