1. 位运算的定义
Java位运算是对操作数的二进制位进行运算,操作数和计算结果都是整型。Java位运算有以下几种类型:&与,|或,^异或,~取反,<<左移,>>右移,>>>无符号右移。
2.Java位运算的场景
Java位运算的场景有很多,比如:
- 判断奇偶数:a & 1 == 0 表示a是偶数,a & 1 == 1 表示a是奇数。
- 求绝对值:(a ^ (a >> 31)) - (a >> 31) 可以得到a的绝对值。
- 求相反数:~a + 1 可以得到a的相反数。
- 交换两个数:a = a ^ b; b = a ^ b; a = a ^ b; 可以交换a和b的值。
- 权限控制:用一个int型变量表示32种权限,每一位代表一种权限,用|或运算设置权限,用&与运算检查权限
3.JDK中哪些地方用到了位运算
JDK中有很多地方用到了位运算,比如:
- HashMap的hash方法用到了无符号右移运算符>>>1。
- Integer的numberOfLeadingZeros方法用到了异或运算符^和右移运算符>>1。
- BitSet的set和get方法用到了与运算符&和或运算符|1。
- EnumSet的of方法用到了左移运算符<<1。
- Thread的getState方法用到了位域和联合的方式来表示线程状态
4.位运算的优缺点
位运算的优点是:
- 位运算是直接对整数在内存中的二进制位进行操作,因此其执行效率非常高。
- 位运算可以实现一些简单的乘除法,比如乘2或除2,只需左移或右移一位即可。
- 位运算可以用来进行权限控制,加密解密,压缩解压等操作。
位运算的缺点是:
- 位运算的可读性较差,不易理解和调试。
- 位运算的适用范围有限,只能对整数进行操作,不能对浮点数或字符串等类型进行操作。
- 位运算需要注意一些细节,比如符号位,溢出,补码等.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2019-04-10 web.xml中<load-on-start>n</load-on-satrt>作用
2019-04-10 JavaWeb中filter的详解及应用案例
2019-04-10 Tomcat的简单归纳总结
2019-04-10 Tomcat 配置详解和优化
2019-04-10 深入理解Tomcat
2019-04-10 Tomcat启动过程原理详解
2019-04-10 Tomcat的目录结构详细介绍(超全)