Sto*_*Dan 3 c bit-manipulation
我在面试时问了这个问题.假设我必须检查第3位:
a=0x9004;
Run Code Online (Sandbox Code Playgroud)
我说过的
if((a<<13>>15)^1==1)
printf("bit 3 is not set");
else
printf("bit 3 is set");
Run Code Online (Sandbox Code Playgroud)
但我觉得这不是他们想要的.
if ((unsigned int )a ^ (0x4) < (unsigned int )a)
printf("bit 3 is set");
else
printf("bit 3 is not set");
Run Code Online (Sandbox Code Playgroud)
如果设置了位3(0x4),那么a ^ 0x4将是更小的算术值a.
if((a | (1<<2)) ^ a)
printf("3rd bit is not set");
else printf("3rd bit is set");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
188 次 |
| 最近记录: |