深圳信狮学校学习部同学分享“位运算符”。虽然目前的学习可能还没用到位运算符,但是如果你想往底层发展,该运算符你必须掌握,这就是“位运算”该运算符的优点在于其效率比普通的运算方式效率高,而底层就会牵扯到很多资源效率等问题,如果效率不高会根本运行不了。
那么什么是位运算符?
常用的位运算符:
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技术的前沿之一。
为了帮助学员能找到更好的工作,节省学生找工作的时间成本,信狮教育特邀深圳零壹云医科技有限公司来校现场招聘运维工程师和前端工程师。
2017年的高考就要到来了,又将是一年的毕业季的来临,想想自己2015年从北大青鸟信狮教育软件开发专业毕业三年了。高考也许是一次改变命运的
7月13日,作为北大青鸟资深合作伙伴,信狮教育总经理、总校长金雨先生与北大青鸟总部老师一起走进了云南盐津,一同开展北大青鸟施爱·助学
经过主持人竞选,参赛选手预报名、海选等一系列准备工作后,北大青鸟深圳信狮学校的学生们于9月20日迎来了《信狮最强音》K歌比赛预赛,本次
经过专业老师的辛劳培育以及学生们的认真学习和努力拼搏,北大青鸟信狮教育1T161班的项目答辩,可谓是一场精彩纷呈的“博弈”。
如何才能成为一名高逼格的网络营销人才呢? 如今的企业对互联网甚是依赖,就连营销阵地都转移到了网络上,尤其是移动互联渐渐崛
北大青鸟IT教育作为中国IT职业的领导品牌。其品牌性已经得到社会和媒体的认可。IT职业教育的衡量标准有两点:一是培训内容,二是教学
北大青鸟信狮教育ACCP学员专访:高中生的逆袭。林友明,一个喜欢笑,却笑得有几分羞涩的大男孩。23岁的他,一年前还是一名工厂
北大青鸟学费是由北大青鸟总部统一规定的,不会出现乱收费和打折的现象,大家不必担心会乱收学费,外地校区和深圳地区的学校会存在一定的
现在在美国已经有超过90%的企业在利用互联网开展营销业务,全球互联网在网上的交易额2000年突破2230亿美元,预计2014年,网络贸易额占
姓名:易*斌 学历:中专 年龄:32岁(就读时24岁) 毕业时间:2010年9月 入职企业:深圳市*狐科技有限公司 职务:运维主
不知不觉中,一年半过去了,而我完成了人生中的一次跨越,一次职业的转换,并找到了一个全新的自我,一个充满激情与勇于面对挑战的自我。
时光飞逝,转眼之间我已从北大青鸟信狮教育毕业,看一看现在的自己真的感觉很是欣慰,我现在取得的成就,不仅归功于自己的努力,更要感谢信狮教育的老师们对我就业的帮助及指导,使我
姓名:陈*同学学历:高中年龄: 25岁入职企业:软*动力信息技术(集团)有限公司职务:Java软件工程师薪资:16000元 月企业介绍:软*动力信
姓名:石柱年龄:19岁学历:大专就职企业:深圳市网合科技有限公司就职岗位:Java软件工程师就业薪资:4000元公司简介:深圳市网合科技股份
拿高薪 进名企 梦想马上go IT培训我们更懂 主流技术+项目实训+就业服务一站对接
北大青鸟深圳信狮校区“大学生们实训直通车”,整合了嘉华讲师资源,由实战型讲师、教质主任、职业规划师、就业指导四环相扣,在大学生IT培...
社会是残酷的,尤其是职场竞争,不进则退,不想被长江后浪拍死在沙滩上就要让自己去学习、充电。学什么技术有前景?学什么技术发展好?JAVA...
学历不高想找高薪又轻松的工作,想学一个技术但不知道学什么好?几乎许多女生都有这个疑问,目前薪资高发展好的IT行业,真的不适合女生吗?...
你是否想创业?但是感觉无处下手 你是否开过淘宝店?但是销量惨淡 你是否参加过淘宝培训班?但是感觉里面的内容都华而不实 金蛛电子商务 一...
广东省教育考试院通报,继2013年成为高考大省之后,2014年广东普通高考报名人数达75.6万人,同比再增2.6万人,增幅为 3.6%,创历史新高。而...
网页设计包含了网页图形设计、界面设计、编写标准化的代码和专有软件、用户体验设计,以及搜索引擎最优化
在这个互联网时代,发展迅速的行业当属IT行业,现在人们可以说时时刻刻都离不开了互联网,在网上订张火车票、出去唱K买张团购卷、没事玩的...