background image

printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
3. 

 

按位异或运算 按位异或运算符 ^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,

当两对应的二进位相异时,结果为 1。参与运算数仍以补码出现,例如 9^5 可写成算式如下: 
00001001^00000101

 

00001100

 

(

12)

main(){
int

 

a=9;

a=a^15;
printf("a=%d\n",a);
}
4. 

 

 

求反运算 求反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位

求反。例如~9

 

的运算为: ~(0000000000001001)结果为:1111111111110110

5. 

 

左移运算 左移运算符 <<”

是双目运算符。其功能把 << ”左边的运算数的各二进位全部左移若干

位,由 <<”右边的数指定移动的位数,高位丢弃,低位补 0

 

。例如: a<<4 指把 a 的各二进位向左

移动 4 位。如 a=00000011(十进制 3),左移 4 位后为 00110000(十进制 48)。
6. 

 

右移运算 右移运算符 >>”

是双目运算符。其功能是把 >> ”左边的运算数的各二进位全部右移若

干位, >>”

 

右边的数指定移动的位数。例如:设 a=15,a>>2 表示把 000001111 右移为

00000011(十进制 3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时, 
最高位补 0,而为负数时,符号位为 1,最高位是补 0 或是补 1 取决于编译系统的规定。
main(){
unsigned

 

a,b;

printf("input

 

a

 

number:

 

");

scanf("%d",&a);
b=a>>5;
b=b&15;
printf("a=%d\tb=%d\n",a,b);
}

!

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\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
}
当 进 行 按 位 与 或 时 , 最 好 使 用 16 进 制 , 在 程 序 中 这 样 表 示 : 0x01   表 示 0000   0001
所以,字符类型 a 的最高位强制 1 可以这样:a=a|0x80。其他的可以依次类推!