如果我的长度为 20 二维数组
长度为 5 个整数,表示为位
int bitsval[6];
数组看起来像例如 bitsval = {0,0,1,0,1,0}
我想要十进制值,所以像
(2^0 x 0) + ( 2^1 x 1) + (2^2 x 0)... 并最终返回最终值为 10
有人可以帮助编写这样的函数吗
这看起来像一个家庭作业问题,所以我会帮忙,但不给你代码
你需要做的是有一个"总计"变量和一个"当前位值"变量。
从等于 32 的"当前位值"变量开始 (2 ^ 5)
然后,让一个遍历数组的循环,如果该位为"1",则将该位值添加到总数中
每次转到数组中的下一个元素时,都需要将"当前位值"值减半
[编辑]
好的 - 如果不是家庭作业,请尝试以下操作:
total = 0;
bitvalue= 32;
for (i = 0; i < 6; i++) {
if (bitsval[i]) total += bitvalue;
bitvalue /= 2;
}
我想这应该有效。
#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);
}
}
无需进入任何类型的二进制文件,并且纯粹在这里进行您的解释是应该有效的:
#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: %dn", result);
return 0;
}
你当然必须按摩它以适应