C 操作符

本文介绍了整数的二进制表示,重点讲解了移位操作符(左移和右移)、位操作符(按位与、按位或、按位异或)以及逻辑操作符(逻辑与和逻辑或)的原理和特点,帮助读者理解编程中的这些关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、移位操作符

整数的二进制表示

<<左移操作符

>>右移操作符

​编辑 2、位操作符

&按位与

| 按位或

^按位异或

异或的特点

3、逻辑操作符 

&&逻辑与

||逻辑或 

&&和||在使用时的区别


今天学了一部分操作符,虽然是一部分,但是实在是太多了,就挑几个特别的。

1、移位操作符

2、位操作符、

3、逻辑操作符

1、移位操作符

移位操作符有两种,分别是:<<左移操作符   >>右移操作符

注意:移位操作符只能操作整数

整数的二进制表示

在了解操作符之前,需要先了解整数的二进制表示:分别是原码、反码、补码

正整数的原码、反码、补码相同

eg:

7 --- 111 --- 00000000000000000000000000000111 --- 7的原码(也就是反码和补码)

(高位(第一位,又叫符号位)是0表示正数,1是负数)(int为4byte=32bit)

-7 --- 10000000000000000000000000000111 --- -7的原码

11111111111111111111111111111000 --- -7的反码(原码的符号位不变,其它位按位取反)

11111111111111111111111111111001 --- -7的补码(反码+1就是补码)

负整数的原码、反码、补码需要通过简单计算得到

eg:

-7 --- 10000000000000000000000000000111 --- -7的原码

11111111111111111111111111111000 --- -7的反码(原码的符号位不变,其它位按位取反)

11111111111111111111111111111001 --- -7的补码(反码+1就是补码)

整数在内存中的储存用的是补码,因此移位操作符操作的是整数的补码

<<左移操作符

将操作对象在内存中的补码左边丢弃,右边补零

 由二进制的性质可知,当a向左移n位的时候,b等于a*2的n次方(负数同样适用)

>>右移操作符

右移操作符分两种:

1、算数位移:将右边第一位舍弃后左边用高位填充

2、逻辑位移:将右边第一位舍弃后左边用0填充

编译时,程序采用哪种右移操作符取决于编译器(如VS2022采用算数位移)

 2、位操作符

位操作符有三种:&按位与、|按位或、^按位异或

&按位与

对两个数进行操作时,两个数的补码一一对应,只要两个补码的对应位中有一个为0,那么按位与的结果就是0

| 按位或

只要两个补码的对应位中有一个为1,那么按位与的结果就是1

^按位异或

相同为0,相异为1

异或的特点

1、两个相同的数异或为0(0 ^ a = a) (a ^ a = 0)

2、异或支持交换律(如下,利用异或的特点)

3、逻辑操作符 

逻辑操作符有两种:&&逻辑与、||逻辑或

&&逻辑与

只要左右任一为假,整体为假

||逻辑或 

 左右任一为真,整体为真

&&和||在使用时的区别

&&:代码从左向右算,在“a++”时,a先用再算,&&左边为0,右边不进行计算,即后面的内容都失效

 ||:只要出现“真”,后面不再计算,即失效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值