表示为转换为小数的位的整数的 C 数组



如果我的长度为 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;
}

你当然必须按摩它以适应

最新更新