嵌入式技术
在上一篇文章中,我们介绍了~
运算符的高级用法,本篇文章,我们将介绍<<
运算符的一些高级用法。
#include < stdio.h >
int main()
{
int x = 1;
printf("请输入2的次方数:");
scanf("%d",&x);
int y = 1 < < x;
printf("n2的%d次方 = %dn",x,y);
return 0;
}
#include < stdio.h >
int main()
{
unsigned char b[4] = {0x12, 0x34, 0x56, 0x78};
unsigned int x = ((unsigned int)b[0] < < 24) | ((unsigned int)b[1] < < 16) |((unsigned int)b[2] < < 8) | ((unsigned int)b[3]);
printf("合并后的整数 = 0x%08xn", x);
return 0;
}
❝下面介绍的两种用法,会用到
&``|``^
的知识
如果有不清楚的,可以查看之前的文章:位运算符的基础用法
#include < stdio.h >
int main()
{
int x = 0xF8;
x |= 1< < 2;
printf("x = 0x%0xn",x);
return 0;
}
#include < stdio.h >
int main()
{
int x = 0xF8;
x &= (~(1< < 3));
printf("x = 0x%0xn",x);
return 0;
}
#include < stdio.h >
int main()
{
int x = 0xF8;
x ^= (3< < 2); // 3的二进制为0b11,左移2位刚好对应第2和第3位
printf("x = 0x%0xn",x);
return 0;
}
#include < stdio.h >
int main()
{
int x = 0xF8; // Ob1111 1000
x |= ((1< < 3)-1);
printf("x = 0x%0xn",x); // 0b1111 1111
return 0;
}
#include < stdio.h >
int main()
{
int x = 0xFF; // 0b1111 1111
x &= ~((1< < 4)-1);
printf("x = 0x%0xn",x); // 0b1111 0000
return 0;
}
#include < stdio.h >
int main()
{
int x = 0xFA; // 0b1111 1010
x ^= ((1< < 4)-1);
printf("x = 0x%0xn",x); // 0b1111 0101
return 0;
}
通过这篇文章,我们学会了用位运算符<<
的4种高级用法
1、计算2的整数次幂
2、将一个字节序列合并为一个整数
3、标记码
4、掩码
在下一篇文章中,我们将介绍位运算符>>
的一些高级用法。
全部0条评论
快来发表一下你的评论吧 !