Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C整数数组,表示为转换为十进制的位_C_Arrays_Binary_Bits - Fatal编程技术网

C整数数组,表示为转换为十进制的位

C整数数组,表示为转换为十进制的位,c,arrays,binary,bits,C,Arrays,Binary,Bits,如果我有20个2d数组的长度 长度为5的整数,表示为位 int bitsval[6]; 该数组类似于例如bitsval={0,0,1,0,1,0} 我想要十进制值,比如 (2^0 x 0)+(2^1 x 1)+(2^2 x 0)。。。最终返回最终值为10 有人能帮我写一个函数吗像这样的函数看起来像是一个家庭作业问题,所以我会帮你,但不会给你代码 您需要做的是有一个“total”变量和一个“current bit-worth”变量 以等于32(2^5)的“当前比特值”变量开始 然后,让一个循环遍

如果我有20个2d数组的长度

长度为5的整数,表示为位

int bitsval[6];
该数组类似于例如bitsval={0,0,1,0,1,0}

我想要十进制值,比如

(2^0 x 0)+(2^1 x 1)+(2^2 x 0)。。。最终返回最终值为10


有人能帮我写一个函数吗像这样的函数看起来像是一个家庭作业问题,所以我会帮你,但不会给你代码

您需要做的是有一个“total”变量和一个“current bit-worth”变量

以等于32(2^5)的“当前比特值”变量开始

然后,让一个循环遍历数组,如果该位为“1”,则将该位的值添加到总值中

每次转到数组中的下一个元素时,都需要将“当前比特值”值减半

[编辑]

好的-如果不是家庭作业,请尝试以下方法:

total = 0;
bitvalue= 32;
for (i = 0; i < 6; i++) {
  if (bitsval[i]) total += bitvalue;
  bitvalue /= 2;
}
total=0;
比特值=32;
对于(i=0;i<6;i++){
如果(bitsval[i])总计+=位值;
比特值/=2;
}

这看起来像是一个家庭作业问题,所以我会提供帮助,但不会给出代码

您需要做的是有一个“total”变量和一个“current bit-worth”变量

以等于32(2^5)的“当前比特值”变量开始

然后,让一个循环遍历数组,如果该位为“1”,则将该位的值添加到总值中

每次转到数组中的下一个元素时,都需要将“当前比特值”值减半

[编辑]

好的-如果不是家庭作业,请尝试以下方法:

total = 0;
bitvalue= 32;
for (i = 0; i < 6; i++) {
  if (bitsval[i]) total += bitvalue;
  bitvalue /= 2;
}
total=0;
比特值=32;
对于(i=0;i<6;i++){
如果(bitsval[i])总计+=位值;
比特值/=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);
}
}
#包括
#包括
void main()
{
int a[]={1,0,0,1,0};
整数和=0;

对于(inti=0;i我想这应该是可行的

#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);
}
}
#包括
#包括
void main()
{
int a[]={1,0,0,1,0};
整数和=0;

对于(inti=0;i而言,不需要进入任何类型的二进制,并且完全按照您的解释进行操作,这应该是可行的:

#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;

}
#包括
#包括
int main(){
整数[6]={0,0,1,0,1,0},结果=0;
对于(int x=5;x>=0;--x){
结果+=(数字[x]*(int)pow(2,5-x));
}
printf(“最终结果:%d\n”,结果);
返回0;
}

当然,您必须在不使用任何二进制代码的情况下对其进行按摩以使其符合要求,并且完全按照您的解释进行操作应该是可行的:

#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;

}
#包括
#包括
int main(){
整数[6]={0,0,1,0,1,0},结果=0;
对于(int x=5;x>=0;--x){
结果+=(数字[x]*(int)pow(2,5-x));
}
printf(“最终结果:%d\n”,结果);
返回0;
}

你将不得不对其进行调整

这个问题似乎离题了,因为它没有试图解决问题。这个问题似乎离题了,因为它没有试图解决问题。这不是一个真正的家庭作业问题,它是一个小工具,我需要一个更大的程序我正在正确的轨道上构建我我有点明白我需要这样的东西,但当它达到2^0和2^1时,我会变得一团糟:(好的,如果不是家庭作业,我已经在我的答案中添加了示例代码这不是一个真正的家庭作业问题,这是一个我需要的小工具,用于一个更大的程序我正在正确的轨道上构建我,我有点理解我需要这样的东西,但当它达到2^0和2^1时,我会变得一团糟:(好的,如果不是家庭作业,我已经在我的答案中添加了示例代码)使用pow()效率非常低b)如果整数不是2个字节,这将不起作用-使用“sizeof(a)/sizeof(a[0])代替a)使用pow()效率非常低b)如果整数不是2个字节,这将不起作用-使用“sizeof(a)/sizeof(a[0])