有没有办法将2的补码位字符串转换为整数? 我认为对于正数而言这很容易,但对于负数而言,我有点困惑。
#include <stdio.h>
int bits2Integer(char bitString[]){
int value = 1;
int power = 1;
int constantIncrement = 2;
if(bitString[0] == 0) {
for(int i = 32; i >= 0; i--){
if(bitString[i] == 1){
value = value + power;
power = power * constantIncrement;
}
else {
power = power * constantIncrement;
}
}
}
哦,我不想使用除stdio.h之外的任何其他库/资源。
答案 0 :(得分:2)
这似乎是最好的方式
#include <stdio.h>
int bits2Integer(char bitString[]){
int ret = 0;
for(int i = 0; i < 32; i++)
if(bitString[i] == '1')
ret |= 1 << (31-i);
return ret;
}
按位运算统治世界:)
请记住,您不能拥有33
位。