算法前置基础知识
位运算相关
对于有符号的的而言:
- 二进制的最高位是符号位(0正1负)
- 正数的原码反码补码都一样
- 负数的反码 = 它的原码符号位不变,其他位取反
- 负数的补码 = 它的反码 +1, 负数的反码 = 负数的补码 -1
- 0的反码补码都是0
- Java 没有无符号位,换言之Java的数据都是有符号的
- 在计算机运算的时候都是以补码的方式来运算的
- 查看运算结果时要看原码
位运算符
- & 按位与 同1为1,否则为0
- | 按位或 有1为1,否则为0
- ^ 按位异或 不同为1,相同为0
- ~ 按位取反
- >> 算术右移 低位溢出,符号位不变,用符号位补溢出的高位
- << 算术左移 符号位不变,低位不变
- >>> 逻辑右移(无符号位右移) 低位溢出,高位补零
随机数相关
// 生成随机数 Math.random() [0,1) Math.random() * N [0,N) (int) Math,random() *N [0,N-1) (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random()) [-N,N]
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战