C语言位运算符的题目求解

来源:百度知道 编辑:UC知道 时间:2024/06/14 01:24:54
初学C语言,对于位运算符不太懂,请不吝赐教。
最好每一步附上解释,在此谢过!

short int X=157;
float Y=3.1415;
求各表达式的值
0x1C4E >> (X & 0x000B);
0x1C4E >> (X || 0x000B);
(X / 60)>Y;
((X%60)/ 60) < Y;
自己解释一下吧。
X=157,二进制为 10011101 ,0x000B二进制为00001011,所以按位与10011101&00001011 = 00001001=9,然后在>>右移九位0x1C4E = 0001 1100 0100 1110 变成 0000 0000 0000 1110 = 14结果就是14

/*
short int X=157;
float Y=3.1415;
Çó¸÷±í´ïʽµÄÖµ
0x1C4E >> (X & 0x000B);
0x1C4E >> (X || 0x000B);
(X / 60)>Y;
((X%60)/ 60) < Y;
*/
#include <stdio.h>
void main()
{
short int X=157;
float Y=3.1415;
printf("res1 %d\n",0x1C4E >> (X & 0x000B));
printf("res2 %d\n",0x1C4E >> (X || 0x000B));
printf("res3 %d\n",0x1C4E >> (X / 60)>Y);
printf("res4 %d\n",((X%60)/ 60) < Y);
}