c语言,位运算

来源:百度知道 编辑:UC知道 时间:2024/05/21 11:28:55
以下是什么意思?0xff是什么(具体点)
main(){
char a='a',b='b';
int p,c,d;
p=a;
p=(p<<8)|b;
d=p&0xff;
c=(p&0xff00)>>8;
printf("a=%d b=%d c=%d d=%d ",a,b,c,d);
}

0xff是什么?是十六进制数FF(16)为二进制数11111111(2)

main(){
char a='a',b='b';/*定义变量并给初始值*/
int p,c,d;
p=a;/*把a的值赋给p*/
p=(p<<8)|b;/*p左移8位然后和b求或后赋值给p*/
d=p&0xff;/*p与0xff求与后赋值给d*/
c=(p&0xff00)>>8;/*p与0xff00求与后右移8位赋值给*/
printf("a=%d b=%d c=%d d=%d ",a,b,c,d);/*输出a b c d*/
}

0xff是个十六进制数,换成十进制为255

d=p&0xff;完全可以写成d=p&255;

0x表示16进制,0xff就是1111 1111,即8位1
<<是左移8位的意思,>>是右移8位 |是或运算,即有1结果就为1
&是与运算,即2个都是1结果为1,否则为0

这个里面,p是中间变量,p&0xff表示保留最低的8位

其他的可以类推。。。。