簡體   English   中英

如何在C中將二進制數組轉換為十進制

[英]How to convert binary array to decimal in C

我正在嘗試將二進制數組轉換為十進制這是我必須轉換的內容,binTodec[8] = {1,1,1,1,0,0,1,1}

我從 for(int i=0; i<8; i++) 開始

有沒有人可以幫助我

一種方法是從最高有效位到最低有效位計算。

如果 binTodec[0] 是二進制數中的最高位:十進制數是
1 * 2^7 + 1 * 2^6 + 1 * 2^5 + 1 * 2^4 + 0 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0
= 243
實現的代碼將是

int binTodec[8] = {1,1,1,1,0,0,1,1};
int result = 0;

for (int i = 0; i < 8; i++) {
    result *= 2;
    result += binTodec[i];
}
printf("%d\n", result);

另一方面,如果 binTodec[0] 是二進制數中的最低有效位:
十進制數是
1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3 + 0 * 2^4 + 0 * 2^5 + 1 * 2^6 + 1 * 2^7
= 207

實現的代碼將是

int binTodec[8] = {1,1,1,1,0,0,1,1};
int result = 0;

for (int i = 7; i >= 0; i--) {
    result *= 2;
    result += binTodec[i];
}
printf("%d\n", result);
unsigned toUnsigned(const int *arr, size_t size)
{
    unsigned result = 0;

    if(arr && size)
    {
        while(size--)
        {
            result *= 2;
            result += !!*arr++;
        }
    }
    return result;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM