如何将位字符串转换为整数?
How to convert bit string into integer?
有什么方法可以将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,我不想使用任何其他 library/resource。
这似乎是最好的方法
#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
位。
有什么方法可以将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,我不想使用任何其他 library/resource。
这似乎是最好的方法
#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
位。