找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4499|回复: 9
打印 上一主题 下一主题
收起左侧

用C进行二进制数转三进制

[复制链接]
跳转到指定楼层
楼主
ID:84299 发表于 2016-7-22 22:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
99黑币
用C进行二进制数转三进制,三进制用二进制数表示,每两位二进制数表示一位三进制数?
有没有人能给我点思路?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:134687 发表于 2016-7-23 00:24 | 只看该作者
#include<stdio.h>
#include<string.h>

void main()
{

    int i,j = 0, num1[64] = {0}, c = 0, k = 0,t = 0, num2[64] = {0};
    char str1[64] = {' '};
    gets(str1);
    c = strlen(str1);
   
    for (i = 0; i < c; i++)
    {
        num1[i] = str1[i] - 48;
    }
   
    while(1)
    {
        int r = 0;
        k = num1[0] % 3;
        num1[0] = num1[0] / 3;
        for (i = 0; i < c; i++)
        {
            t = k;
            k = (k * 2 + num1[i + 1]) % 3;
            num1[i + 1] = (t * 2 + num1[i + 1]) / 3;
        }
            
        num2[j] = t;
        j++;
        
        for (i = 0; i < c; i++)
        {
            if (num1[i] == 0)
            {
                r++;
            }
        }
   
        if (r == c)
        {
            break;
        }
    }
   
    for (i = 0; i < j; i++)
    {
        if (num2[j - 1 - i] == 2)
        {
            printf("%s", "10");
        }
        else
        {
            printf("%.2d", num2[j - 1 - i]);
        }
    }
   
    printf("\n");
}

编译后运行,
输入二进制数:
1011001
输出三进制数:
0100001010

评分

参与人数 1黑币 +9 收起 理由
aiwang51 + 9 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:134687 发表于 2016-7-23 00:24 | 只看该作者
见我的回复
回复

使用道具 举报

地板
ID:122633 发表于 2016-7-23 09:06 | 只看该作者
三个二进制表示两个三进制吧
回复

使用道具 举报

5#
ID:111634 发表于 2016-7-23 12:36 | 只看该作者
二进制数转三进制数,先列出真值表,单片机对应查表即可。
回复

使用道具 举报

6#
ID:84299 发表于 2016-7-23 16:58 | 只看该作者

谢谢,已解决,原以为取余法单片机空间不够,没想到写完还有十几个字节。
回复

使用道具 举报

7#
ID:84299 发表于 2016-7-23 17:03 | 只看该作者
songdaxuan 发表于 2016-7-23 09:06
三个二进制表示两个三进制吧

两位二进制数表示一位三进制
如二进制数1011
那三进制数是102
因为单片机没有三进制数的表现形式,所以三进制数102用二进制来表现是010010
回复

使用道具 举报

8#
ID:84299 发表于 2016-7-23 17:05 | 只看该作者
zl2168 发表于 2016-7-23 12:36
二进制数转三进制数,先列出真值表,单片机对应查表即可。

那这个表得多大,几千个数,过于麻烦。
回复

使用道具 举报

9#
ID:84299 发表于 2017-2-10 15:34 | 只看该作者
已解决
回复

使用道具 举报

10#
ID:104472 发表于 2017-2-10 16:54 | 只看该作者
学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表