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。其他的可以依次类推!