我想实现一个函数get_bit(value,pos)
,它返回索引位置处的无符号整数值的位(0或1)的值。value
是一个整数。
例如,如果值= 5(二进制为0101),则get_bit(5,0)= 1,然后如果get_bit(5,1)= 0,则get_bit(5,2)=1,依此类推。
到目前为止,我尝试做的是:
#include <stdio.h>
#include <math.h>
long decimalToBinary(int decimalnum)
{
long binarynum = 0;
int rem, temp = 1;
while (decimalnum!=0)
{
rem = decimalnum%2;
decimalnum = decimalnum / 2;
binarynum = binarynum + rem*temp;
temp = temp * 10;
}
return binarynum;
}
const char * get_bit(int value, int pos) {
char result[99];
long bin_val = decimalToBinary(value);
sprintf(result, "%f", bin_val);
return result[pos];
}
int main() {
printf( get_bit(5,0) );
return 0;
}
但是它显示出分割错误。2有谁能帮助它工作吗?
2条答案
按热度按时间deikduxw1#
正如我在评论中提到的,
get_bit
的返回值是不正确的。您返回的result[pos]
是一个char
值,作为一个char *
。printf
将取消引用一个无效的地址,从而导致分段错误。下面的修复程序对我很有效:输出:
ryhaxcpt2#
您可以抓取如下位,然后打印它。