找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5835|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

用C進行二進制數(shù)轉(zhuǎn)三進制

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:84299 發(fā)表于 2016-7-22 22:38 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
99黑幣
用C進行二進制數(shù)轉(zhuǎn)三進制,三進制用二進制數(shù)表示,每兩位二進制數(shù)表示一位三進制數(shù)?
有沒有人能給我點思路?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

9#
ID:104472 發(fā)表于 2017-2-10 16:54 | 只看該作者
學(xué)習(xí)了
回復(fù)

使用道具 舉報

8#
ID:84299 發(fā)表于 2017-2-10 15:34 | 只看該作者
已解決
回復(fù)

使用道具 舉報

7#
ID:84299 發(fā)表于 2016-7-23 17:05 | 只看該作者
zl2168 發(fā)表于 2016-7-23 12:36
二進制數(shù)轉(zhuǎn)三進制數(shù),先列出真值表,單片機對應(yīng)查表即可。

那這個表得多大,幾千個數(shù),過于麻煩。
回復(fù)

使用道具 舉報

6#
ID:84299 發(fā)表于 2016-7-23 17:03 | 只看該作者
songdaxuan 發(fā)表于 2016-7-23 09:06
三個二進制表示兩個三進制吧

兩位二進制數(shù)表示一位三進制
如二進制數(shù)1011
那三進制數(shù)是102
因為單片機沒有三進制數(shù)的表現(xiàn)形式,所以三進制數(shù)102用二進制來表現(xiàn)是010010
回復(fù)

使用道具 舉報

5#
ID:84299 發(fā)表于 2016-7-23 16:58 | 只看該作者

謝謝,已解決,原以為取余法單片機空間不夠,沒想到寫完還有十幾個字節(jié)。
回復(fù)

使用道具 舉報

地板
ID:111634 發(fā)表于 2016-7-23 12:36 | 只看該作者
二進制數(shù)轉(zhuǎn)三進制數(shù),先列出真值表,單片機對應(yīng)查表即可。
回復(fù)

使用道具 舉報

板凳
ID:122633 發(fā)表于 2016-7-23 09:06 | 只看該作者
三個二進制表示兩個三進制吧
回復(fù)

使用道具 舉報

沙發(fā)
ID:134687 發(fā)表于 2016-7-23 00:24 | 只看該作者
見我的回復(fù)
回復(fù)

使用道具 舉報

樓主
ID:134687 發(fā)表于 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");
}

編譯后運行,
輸入二進制數(shù):
1011001
輸出三進制數(shù):
0100001010

評分

參與人數(shù) 1黑幣 +9 收起 理由
aiwang51 + 9 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表