[英]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.