C语言问题 替换指定的位

来源:百度知道 编辑:UC知道 时间:2024/09/20 15:18:33
#include"stdio.h"
int bitcalculate (void)
{
int bit,number=0;
bit=~0;
while (bit){
++number;
bit>>=1;
}
return number;
}
unsigned int bitpat_set (unsigned int *p,unsigned int value2,int start,int end)
{
int bitcalculate (void);
unsigned int value1=*p;
int bits;
bits=bitcalculate();
value1<<=start;
value1>>=(bits-(end-start));
value1=value1|value2;
return value1;
}
int main (void)
{
unsigned int bitpat_set (unsigned int *p,unsigned int value2,int start,int end);
unsigned int x=0150u,n=077u;
printf("this is %u",bitpat_set (&x,n,2,4));
return 0;
}
请问这段代码错在哪里,请改正

#include"stdio.h"
int bitcalculate (void)
{
int bit,number=0;
bit=~0;
while (bit){
++number;
bit>>=1; //在这进入死循环,是不是改为bit<<=1;
}
return number;
}
unsigned int bitpat_set (unsigned int *p,unsigned int value2,int start,int end)
{
int bitcalculate (void);
unsigned int value1=*p;
int bits;
bits=bitcalculate();
value1<<=start;
value1>>=(bits-(end-start));
value1=value1|value2;
return value1;
}
int main (void)
{
unsigned int bitpat_set (unsigned int *p,unsigned int value2,int start,int end);
unsigned int x=0150u,n=077u;
printf("this is %u",bitpat_set (&x,n,2,4));
return 0;
}