操作符详解(1)
创始人
2024-02-19 22:01:30

目录

一、操作符分类

二、算术操作符

三、位移操作符

                1、<<   左位移操作符号

                2、>>   右位移操作符

四、位操作符

                1、& ---  按位与

                2、|  ---   按位或

                3、^  ---   按位异或

         变态题

 五、赋值操作符

                  符合赋值符


一、操作符分类

操作符也被称为运算符。

算术操作符

位移操作符

位操作符

赋值操作符

单目操作符

关系操作符

逻辑操作符

条件操作符

逗号表达式

下标引用、函数调用和结构成员

二、算术操作符

+   -   *   /   %

1、除了%操作符(取模)之外,其他的几个操作符可以作用于整数和浮点数。

 2、对于/操作符,如果两个操作数都为整数,执行的是整数除法,如果向计算出小数,则除号两端至少有一个操作数是浮点数。(操作数指的是下面10和3)

 3、%操作符的两个操作数必须为整数。返回的是整数之后的余数。

三、位移操作符

<<   左位移操作符

>>   右位移操作符

移位操作符移的是补码的二进制位。

注:位移操作符的操作数只能是整数! 

 在讲之前,先为大家补充整数二进制表示形式(3种)

 

1、<<   左位移操作符号

正数的案例:

解释如下图:

左移操作符移位规则:左边丢弃,右边补0,且b打印的是原码的值。

注: a<< 1的结果是移位之后的效果,但是a的值是不变的。

负数的案例:

解释如下图所示:

对于负值,左移操作符还是左边丢弃,右边补0,且b打印的是原码的值。

所以最后-10的补码要转换成原码才是b的结果。

 注:即使是负值, a移位之后,a的值还是不变。

最后有没有发现,左移有×2的效果。

2、>>   右位移操作符

 首先右移运算分为两种:

①逻辑位移(不讲,和左移操作符差不多)

        左边补0,右边丢弃

②**算术位移(常见)

        左边用原该值的符号位填充,右边丢弃

注:逻辑位移算术位移取决于编辑器,一般都是算术位移。

②**算术位移

解释如下图所示: 

 

警告⚠:

对于位移运算符,不要移动负数位,这个是标志未定义的。

四、位操作符

位操作符有

& ---  按位与

|  ---   按位或

^  ---   按位异或

注:它们的操作数必须是整数,同时也是针对二进制位进行计算的。

1、& ---  按位与

计算规则:对应的二进制位上,有0则为0,两个同时为1,才为1。

解析:首先a&b一定是二进制位进行计算,也就是存到内存中的补码进行计算,a的补码为00000000000000000000000000000011,b的补码为11111111111111111111111111111011,根据按位与的计算规则,按位与结果(补码):00000000000000000000000000000011,最后还要转化成原码,由于正数的原码、反码、补码都是一样的,所以最后打印结果为3。

2、|  ---   按位或

计算规则:对应的二进制位上,有1则为1,两个同时为0,才为0。

解析:首先a | b还是二进制位进行计算,a的补码为00000000000000000000000000000011,b的补码为11111111111111111111111111111011,根据按位或的计算规则,按位与结果(补码):11111111111111111111111111111011,最后还要转化成原码,但是由于按位或结果就是b的补码,所以最后打印结果为-5。

3、^  ---   按位异或

计算规则:对应的二进制位,相同为0,相异为1。

解析:首先a ^ b还是二进制位进行计算,a的补码为00000000000000000000000000000011,b的补码为11111111111111111111111111111011,根据按位异或的计算规则,按位与结果(补码):11111111111111111111111111111000,最后还是要转化成原码,原码:10000000000000000000000000001000(1*2的3次方),所以结果为-8


接下来,插播一道变态题

要求:不能创建临时变量(第三个变量),实现两个整数的交换。

首先假设可以创建临时变量:

那不创建临时变量应该怎么做呢?接着往下看

但是这个方法有一个缺陷,如果a和b的数字太大的时候,超出范围就会溢出。

那应该怎么办呢?接着往下看

解析:

异或操作符的缺点

1、可读性差

2、效率不如使用临时变量的方法

3、异或只能针对整数的交换


 五、赋值操作符

赋值操作符是一个很棒的操作符,它可以让你得到一个你之前不满意的值,也就是你可以给自己重新赋值。

int weight = 120; //初始化赋值
weight = 130; //不满意就赋值//赋值操作符还能连续使用
int a = 10;
int x = 20;
int y = 30;
a = x = y + 1; //连续赋值(赋值顺序从右往左)//或者还能这么写(好的写法)
x = y + 1;
a = x;
//这样的写法是不是更加容易调试

符合赋值符

目的就是为了简化代码。

+=     a+=5实际上就是a=a+5

-=      a-=5实际上就是a=a-5

*=      a*=5实际上就是a=a*5

/=      a/=5实际上就是a=a/5

%=    a%=5实际上就是a=a%5

>>=    b = b>>1可以写成b>>=1

<<=    b = b<<1可以写成b<<=1

&=     b =  b & 1可以写成b&= 1

|=      b =  b | 1可以写成b|= 1

^=    b =  b ^ 1可以写成b^= 1

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...