C语言操作符 移位操作符 位操作符 运算 难点 重点

本文详细介绍了二进制移位操作符(左移、右移)及其规则,包括逻辑移位和算术移位的区别。同时,讲解了按位与、按位或和按位异或等位操作符的工作原理,并通过实例展示了它们在编程中的应用。重点讨论了移位操作符的乘法效果和位操作符的特性,帮助理解这些基本的计算机底层运算。
摘要由CSDN通过智能技术生成

以下所有操作符都是基于二进制进行的操作符

移位操作符

左移操作符 <<

移位规则

将整型数字的二进制补码向左移动。左边抛弃,右边补0;

使用

例如:

int a =5;
int b = a << 1;

10的二进制补码为00000000000000000000000000001010,将10的二进制补码向左移动一位,右端不上一0,左端0由于超出32个比特位,所以抛弃。
在这里插入图片描述

而第二行由于整个二进制序列往左移动了一位,b的值变成了10:

在这里插入图片描述

难点重点和小知识点

1.那么,为什么a的值没有变化呢?
看这个语句,我们可以很明显地得到答案:移位运算符不是赋值运算符,不能给变量赋值,变量在没有被赋值的情况下本身的值是不变的。
使用移位运算符和使用算术运算符是类似的。

int x= y+2;

2.左移操作符有乘2的效果
如代码:

int a = 5;
int b = a << 1; //即b = a * 2^1
int x = 12;
int y = x << 3 ; //即 y = x * 2 ^ 3

右移操作符 >>

移位规则

右移运算分两种:

  1. 逻辑移位
    左边用0填充,右边丢弃
  2. 算术移位
    左边用原该值的符号位填充,右边丢弃

使用

算术右移

如:

int num = -1 >> 1;

-1的补码为:
在这里插入图片描述
在这里插入图片描述

逻辑右移

如:

int num = -1 >> 1;

-1的补码为:
在这里插入图片描述

在这里插入图片描述

位操作符

按位与 &

2个整形的补码,对应的二进制位都为1,则为1,若对应的二进制位数字不同,则位0。
如:
在这里插入图片描述

按位或 |

2个整形的补码,对应的二进制位一个为1,则为1,若对应的二进制位数字都为0,则位0。
如:
在这里插入图片描述

按位异或 ^

两个整形的补码,对应的二进制位相同则为0,相异为1,
如:
在这里插入图片描述

总结一下按位异或的小规律:

int a = 5;
1.a ^ a = 0;
2.0 ^ a = a;

建议自行按照异或的规律验证小规律来熟悉异或操作符

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值