有个程序

来源:百度知道 编辑:UC知道 时间:2024/05/18 14:29:43
main()
{int X=0x0215,y=0x0ff00;
printf("%d\n"(x&y>>4|0x005f);)
}
能不能给我分析下。其中关于进制转换的问题0x0215.0x0ff00的转换计算

1.先说下程序问题(可能是笔误):
X,x错误混用; printf参数表中少一个逗号,另外分号位置错误。

更严格一点,用printf的话应该 #include<stdio.h>,另外main函数前应该加int,最后一个大括号前加 return 0;

2.进制转换应该不成问题
x 0x0215--> 0000 0010 0001 0101
y 0x0ff00--> 0000 1111 1111 0000 0000

运算符优先级到值得注意(为了清楚起见,加了括号):

y>>4 可得 0000 1111 1111 0000
x&(y>>4)可得 0000 0010 0001 0000
(x&(y>>4))|0x005f 可得 0000 0010 0101 1111
转换为10进制可得 607