69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#define WIRTE_UINT(des ,x ,pos ,len) ( \
(des) \
& \
~( /* 除要修改的位为0,其余都为1 */ \
( \
(1<<(len))-1 /* 长度为len位的1 */ \
) \
<<(32-(pos)-(len)) /* 左移32-(pos)-(len)位 */ \
) \
| \
( \
(x) \
<<(32-(pos)-(len)) \
) \
)
#define READ_UINT(src ,pos ,len) ( \
( \
( \
(unsigned)(src) \
) \
>>(32-(pos)-(len)) /* 逻辑右移32-(pos)-(len)位 */ \
) \
& \
( \
(1<<(len))-1 /* 长度为len位的1 */ \
) \
)
int main() // 1111111111222222222233
{ //bit 01234567890123456789012345678901
unsigned int des = 0x661; // 00000000000000000000011001100001
unsigned int r;
des = WIRTE_UINT(des ,3 ,28 ,2); // 00000000000000000000011001101101
printf("des==0x%08X\n",des);
r = READ_UINT(des ,28 ,2);
printf("r==%d\n",r);
return 0;
}
//des==0x0000066D
//r==3
00100100&1 ->00000000;
00100100& 10 -> 00000000;
00100100& 100 ->00000100;
00100100& 1000 ->00000000;
00100100& 10000 ->00000000;
00100100& 100000 ->0010000;//就是这个把, 00100000<<1 -> 01000000
00100100& 1000000 ->00000000;
00100100& 00000000 -> 00000000;
unsigned char fun(unsigned char val)
{
unsigned char tmp = 0X1;
unsigned char a;
while(tmp != 0);
{
if(tmp & val)
{
a = tmp & val;
tmp = tmp<<1;
}
else
tmp = tmp<<1;
}
return a;
}
/*************************************************************************
> File Name: hello.c
> Author: Jukay
> Mail: hellojukay@gmail.com
> Created Time: 2014年10月22日 星期三 18时10分02秒
************************************************************************/
#include<stdio.h>
int main()
{
unsigned char fun(unsigned char val);
unsigned char n = 0X1;
printf("%x\n",fun(n));
return 0;
}
unsigned char fun(unsigned char val)
{
unsigned char tmp = 0X1;
unsigned char a;
while(tmp != 0);
{
if(tmp & val)
{
a = tmp & val;
tmp = tmp<<1;
}
else
tmp = tmp<<1;
}
return a;
}
#include <stdio.h>
unsigned char setfirstzero(unsigned char num)
{
int len=0;
while(num!=0x01)
{
len++;
num=num>>1;
}
num=num<<len;
return num;
}
int main()
{
unsigned char num=0x11;
printf("%x\n",setfirstzero(num));
return 0;
}
unsigned func(unsigned val)
{
unsigned ret = 0;
val <<= 1;
while (val)
{
ret = val;
val &= (val - 1);
}
return ret;
}
unsigned func(unsigned val)
{
unsigned ret;
val <<= 1;
while (val)
{
ret = val;
val &= (val - 1);
}
return ret;
}