深圳信狮学习部同学分享“位运算符”

时间:2016-06-22 06:37:25    来源:信狮教育    已有人浏览
分享到:
导读:深圳信狮学校学习部同学分享位运算符。虽然目前的学习可能还没用到位运算符,但是如果你想往底层发展,该运算符你必须掌握,这就是位运算该运算符的优点在于其效率比普通的运算方

深圳信狮学校学习部同学分享“位运算符”。虽然目前的学习可能还没用到位运算符,但是如果你想往底层发展,该运算符你必须掌握,这就是“位运算”该运算符的优点在于其效率比普通的运算方式效率高,而底层就会牵扯到很多资源效率等问题,如果效率不高会根本运行不了。
那么什么是位运算符?

常用的位运算符:

1、&

2、|

3、^

4、>>

5、<<

6、~

可能大家会有疑问,&和| 不是和&& , ||很相似,功能一样吗?其实不然 & ,| 是位运算,也可以跟正常的&& ,|| 一样用,但是会有一个判断性能上的问题.

这里的 & 和| 在判断的时候 会判断2个条件 而&& 和 || 却不会,这就是短路,如:

booleana = false;

boolean b=true;

if(a&& b){

System.out.println("逻辑运算符");

}

if(a& b){

System.out.println("位运算符");

}

在上面if 判断语句中结果是一样的,但是处理方式却不一样,

&& 的处理方式是先判断a是true 还是 false ,由于我给a是false 所以这个if判断就会结束,而不会再次判断(&&的判断是2个条件都是true才成立)

&的处理方式却和&&的处理方式截然不同,而是判断了a 发现是false,也不会结束而是继续判断b,从这点上我们就可以知道 &&的效率比&的效率高,

这个叫做“短路”。

|和 ||也是同理,我就不多做介绍了。

其实在程序中的所有数据在计算机内存中都是以二进制的形式存储的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。比如,&运算本来是一个逻辑运算符,但整数与整数之间也可以进行&运算。举个例子,6的二进制是110,11的二进制是1011,那么6&11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)

1、&:

实例:

inta = 5;

intb = 4;

System.out.println(a&b);

答案:5

为什么会出现这个答案了?

0000-0000-0000-0101//这是5的二进制因为是int类型所以是32位

0000-0000-0000-0100

&——————————————

0000-0000-0000-0100

所以答案是:4

这里的0和1分别表示 false,true;

0和 0 = 0 // false &&false=false

0和 1 = 0//false &&true=false

1和 1 = 1//true &&true=true

2、|:

实例:

inta = 5;

intb = 4;

System.out.println(a|b);

答案:5

为什么会出现这个答案了?

0000-0000-0000-0101

0000-0000-0000-0100

|——————————————

0000-0000-0000-0101

原理不变,因为是|所以:

0和0 =0//false&& false=false

1和0 =1//true&& false=true

1和1 = 1//true&& true=true

3、^

这个符号叫做异或,如字面意思和或相反,

inta = 5;

intb = 4;

System.out.println(a^b);

答案:1

为什么会出现这个答案了?

0000-0000-0000-0101

0000-0000-0000-0100

^——————————————

0000-0000-0000-0001

该运算符的运算规律是:

0和 0 = 0//false && false=false

0和 1 = 1//false && ture=true

1和 1 = 0//true && true=true

该运算符有个特点,有个特点就是一个数异或一个数得出的数,再异或上一个被异或的数,会得出异或的数。

如:

inta = 5;

intb = 4;

intc = a^b;

System.out.println(c^a);

答案是:4

4、>>(右移)

7 >> 2 = 0000 0111 >>2 = 0000 0001 = 1

0000-0000-0000-0111

0000-0000-0000-0001

这里向右移动了2位,最低位的两个1被抹去,被抹去的部分补零

这里右移两位等于除了2的2次方,7/4 = 1 在整数除法中则看成是被舍掉了小数部分。

5、<<(左移)

14 << 2=56,

0000-0000-0000-1110

0000-0000-0011-1000

因为 14 (即二进制的 00001110)向左移两位等于 56 (即二进制的 00111000)。

如果也行上面的例子同学们还不明白,我用不同颜色来示范

假如要<<2位

红色:开始

黄色: 结束

0000-0000-0000-0011

0000-0000-0000-1100

0000-0000-0000-1100

0000-0000-0011-0000

>>4

0000-1111-0000-0000

0000-0000-1111-0000

0000-0000-0011-1100

0000-0000-0000-0011

6、~

这个叫做反码,个人理解就是给一个数取反-1

如:

inta =6;

System.out.println(~a);

答案:-7

0000-0000-0000-0110

1111-1111-1111-1001

这就是-6的二进制表示方式。

在负数的二进制最高位是1 因为是负数而且是二进制所以是1。

哪个说了一大堆,同学们可能会出现以下情况,如有雷同纯属巧合:

同学A:这什么跟什么啊,哪里效率高了,全是二进制的运算,搞的我都晕了,

解:普通的*/都是二元运算,而位运算是一元运算所以在效率这方面比较高,我给同学们分析底层运算是因为有些公司的笔试会考。

同学B:这是C语言的东西,咱们学java的完全用不到。

解:同学们都知道,java是从c语言优化过来的一门高级语言,移除了C语言的难控制的指针等等,并在此基础上回炉重造的语言,设计者既然保留其特性,说明其特性还是有利益,俗话说的好技多不压身。

同学C:不就是效率吗,我现在xxx设备,处理速度都是xxx的快,别跟我谈性能。

解:这是国人最容易犯的毛病,像老外在性能优化这方面特别注意,这也是老外能领先于IT技术的前沿之一。

  •       关于学什么技术好就业这个问题,最常见的时候是人们想要找工作的时候,这不,最近小编的朋友就来问过了,因为想换工作,男生学

  • 信狮教育学校同样严格把控,校区每一位任课老师均拥有丰富的行业经验,并且经过了北大青鸟总部严格教学教法培训合格后方可持证上岗工作,他们在教学过程中不仅能传授课本上有的知识,

  •   随着了年末的到来,求职也进入了一个萧条期。从2013年史上最难就业季,到2014年更难就业季,大学生就业难一直是社会各界关注的热点。据

  •       深圳北大青鸟信狮教育:上了大学真的好就业吗?高考结束考上大学的高中生们往往都松了一口气,在暑假里不断憧憬着四年舒坦的大

  •   根据最新新闻报道,4月1日起,北京、上海和天津将分别上调最低工资标准。据记者不完全统计,随着北京和上海加入最低工资标准的上调行列

  • 田*辉:输了高考赢了人生

    时间过得非常快,从北大青鸟信狮教育毕业至今似乎已有五月之久,六个月的学习时间似乎完完整整的达到一种并且给人屌丝逆袭的感觉。想想过去的种种我对现在的自己以及获得的成绩感到非

  • 陈*东:梦想照进现实,奋力前行

    姓名:陈*东班级:JT29班学历:大专年龄:23就业企业:云奥贸易就业岗位:开发工程师就业薪资:8000我,曾是一个刚离开校园的毕业生,怀揣

  • 江*宇:在信狮的学习只有“值得”两字可以来形容

    姓名:江*宇班级:3T131专业:ACCP8 0学历:初中年龄:17就业企业:深圳*网智能科技有限公司就业岗位:java软件工程师就业薪资:6500+伴随

  • 不忘初心,方得始终

    姓名:林*辉班级:3T129学历:高中年龄:21就业企业:深圳华为*安云谷就业岗位:web工程师就业薪资:8500时间飞逝,一年半的时光匆匆而过,

  • 许*泽:我的人生我做主

    半年前对生活比较迷茫 ,决定继续从事自己的专业,于是来到了信狮学校进行了为期半年的Java学习,毕业后顺利进入全新的工作领域,成为了一

热点专题 更多 >
热门标签 更多 >