如果我有20 2D陣列的長度數組c轉換爲十進制
長度的5個表示爲比特
int bitsval[6];
整數,陣列看起來像例如bitsval = { 0,0,1,0,1,0}
,我想十進制值所以像
(2^0 X 0)+(2^1×1)+(2^2× 0)...並最終返回最終值10
可有人幫忙寫這樣的函數
如果我有20 2D陣列的長度數組c轉換爲十進制
長度的5個表示爲比特
int bitsval[6];
整數,陣列看起來像例如bitsval = { 0,0,1,0,1,0}
,我想十進制值所以像
(2^0 X 0)+(2^1×1)+(2^2× 0)...並最終返回最終值10
可有人幫忙寫這樣的函數
這看起來像一個家庭作業問題的功能,所以我會幫忙,但不給你的代碼
你需要做的是有一個'total'變量和'當前位值'變量。
開始與「當前位值得」變量等於32(2^5)
然後,有一個循環經歷的陣列,將所述位值得到總如果所述位是「1」
每次你去下一個元素,你需要一半的「當前位身價」值
[編輯]
OK數組中 - 如果不是功課,試試這個:
total = 0;
bitvalue= 32;
for (i = 0; i < 6; i++) {
if (bitsval[i]) total += bitvalue;
bitvalue /= 2;
}
它不是一個真正的家庭作業問題,它是一個小工具,我需要一個更大的程序,即時編譯在正確的軌道上即時編輯我明白,我需要類似這樣的東西,但即時獲取搞亂2^0和2^1 :( – theForgottenCoder
好的,如果它不是作業,我已經將示例代碼添加到我的答案 – pscs
這應該工作我猜。
#include<math.h>
#include<stdio.h>
void main()
{
int a[]={1,0,0,1,0};
int sum=0;
for(int i=0; i<sizeof(a)/2; i++)
{
if(a[i]==1)
sum+=pow(2,(sizeof(a)/2)-i-1);
}
}
a)使用pow()效率非常低 b)如果整數不是2個字節,則不起作用 - 使用「sizeof a)/ sizeof(a [0])「 – pscs
沒有進入任何一種二進制的,而純粹是你在這裏解釋過的工作是什麼,應該工作:
#include <stdio.h>
#include <math.h>
int main(){
int number[6] = {0,0,1,0,1,0}, result = 0;
for (int x = 5; x >= 0; --x){
result += (number[x] * (int) pow(2, 5-x));
}
printf("Final result: %d\n", result);
return 0;
}
你會偏離航向有按摩它適合
這個問題似乎是無關緊要的,因爲它沒有顯示解決問題的嘗試。 –