位运算符和位运算

所谓位运算是指进行二进制位的运算。

C语言提供了如下的位运算符:

基本格式:a&b1.1.1 按位与运算符

基本规则:0&0 = 0 0&1 = 0 1&0 = 0 1&1 = 1 (即,只有1&1为1,其他为0)

作用:

将某些位清零:想要清除哪一位,就与上对应的那一位为0.

eg: 00101011想要清除低3位,则&上11111000. 变成00101000

取指定位:想要取哪一位,就与上对应那一位为1.

eg:00101011想要取出低3为,则&上00000111. 变成00000011

1.1.2 按位或运算符

基本格式:a|b

基本规则:0|0 = 0 0|1 = 1 1|0 = 1 1|1 = 1 (即,只有0|0为0,其他为1)

作用:

设定某些位为1:想要设置哪一位为1,就或上对应的那一位为1.

eg:00101011想要将第4位设置为1,则|上00010000,变成00111011

1.1.3 异或运算符

基本格式:a^b

基本规则:0^0 = 0 0^1 = 1 1^0 = 1 1^1 = 0 (即“相同为0,相异为1”)

作用:

使特定位翻转:想要将哪些位翻转,就异或上对应的哪些位为1.

eg:00101011想要将低4位翻转,则^上00001111,变成00100100

和0相异或,保留原值

eg:00101011^00000000,还是00101011

1.1.4 取反运算符

基本格式:~a

基本规则:~0 = 1 ~1 = 0

作用:

结合&可以将一个数的指定位清0.

eg:a=00101011,如果a&=~1,则将a的最低位清0

一个数a按位取反之后的值为a的相反数-1

1.1.5 左移运算符

基本格式:a << n (n为整数)

基本规则:将一个数的各二进制位全部左移若干位。(左丢弃,右补0)

举例:x=01010001,x << 2,则x=01000100

作用:

在左移时被溢出舍弃的高位中不包含1的情况时,左移一位相当于该数乘以2。依此类推

1.1.6 右移运算符

基本格式:a >> n (n为整数)

基本规则:将一个数的各二进制位全部右移若干位。(正数左补0,负数左补1,右丢弃)

举例: x=00101111,x >> 2,则x=00001011

x=10110010,x >> 2,则x=11101100

作用:

在右移时被溢出舍弃的低位中不包含1的情况时,右移一位相当于该数除以2。依次类推

永不止步步 发表于12-23 10:41 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:308117个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号