C语言程序设计基础教程 3.11、位运算
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
位运算符与表达式
C语言
按位取反运算(~)
求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。 例如~9的运算为:
~(0000000000001001)结果为:1111111111110110
位运算符与表达式
C语言
左移位运算(<<)
左移运算符“<<”是双目运算符。其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的 数指定移动的位数,高位丢弃,低位补0 例如: 需要指出的是,高位左移后溢出,舍弃不起作用。左移1位相当于该数乘以2, 左移2位相当于该数乘以4,但此结论只适合该数左移时被溢出舍弃的高位中不 包含1的情况。例如,假设一个字节存一个整数,若a为无符号整数,则a=64时, 左移1位时溢出的是0,符与表达式
C语言
按位取或运算(|)
按位或运算符“|”是双目运算符。其功能是参与运算的两个数各对应的二进位相或。只要对应的两个二进 位有一个为1,结果位就为1,只有两个都为0的时候才为0。参与运算的两个数均以补码出现。
位运算符与表达式
C语言
按位取异或运算(^)
按位异或运算符“^”是双目运算符。其功能是参与运算的两个数各对应的二进位相异或,当两对应的二进 位相异时,结果为1,相同则为0。参与运算数仍以补码出现
位运算符与表达式
C语言程序设计
位运算符与表达式
C语言
位运算符
为运算符包括6种:
按位与(&)
取反(非)运算符是单目运算符,
其余是双目运算符,要求符号左右
两侧各有一个运算量;
按位或(|)
按位非(~) 按位异或(^) 左移位(<<) 右移位(>>
位运算的运算对象只能是整型或字
符型数据,而不能够是浮点型数据; 位运算的优先级从高到低依次是按 位取反、移位、按位与、按位异或、 按位或
位运算符与表达式
C语言
按位取与运算(&)
按位与运算符“&”是双目运算符。其功能是参与运算的两个数各对应的二进位相与。只有对应的两个二进 位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。
源码就是把一个数转化为二进制(1个字节);1、对于正数,补码与原码相同;2、对于负数,数值位的绝对 值取反后在最低位加1,通俗的讲就是将这个负数转换的二进制数,各位取反,末位加1。
a=3;
a<<4; 指把a的各二进位向左移动4位。 如a=00000011,左移4位后为 00110000(十进制48)。
位运算符与表达式
C语言
右移位运算(>>)
右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的 数指定移动的位数。 例如: a=15; a>>2; 表示把000001111右移为00000011(十进制3)。 说明:对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0, 而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。