原码、反码、补码
1、二进制的最高位是符号位:0 表示正数,1 表示负数
2、正数的原码、反码、补码相同
3、负数的反码:原码的符号位不变,其他位进行取反操作
4、负数的补码:反码 + 1
5、负数的反码:补码 - 1
6、Java 中的数值都是带符号的
7、计算机以补码方式进行运算、存储
8、以原码方式显示运算结果
位运算符
1、&(按位与):两位全为 1,运算结果为 1,否则为 0
2、|(按位或):两位其中为 1,运算结果为 1,否则为 0
3、^(按位异或):两位一个为 1,另一个为 0,运算结果为 1,否则为 0
4、~(按位取反):0 变 1,1 变 0
byte b1 = 2;
byte b2 = 3;
byte b3 = -2;
System.out.println(b1 & b2);
/*
2的原码、补码:00000010
3的原码、补码:00000011
按位与&运算后
运算结果的补码、原码:00000010
二进制原码转为十进制:2
*/
System.out.println(~b3);
/*
-2的原码:10000010
-2的反码:11111101
-2的补码:11111110
按位取反~运算后
结果的补码、原码:00000001
二进制原码转十进制:1
*/
5、>>(算术右移):低位溢出,符号位不变,符号位缺失的高位
(1)a >> b 本质:a / 2b
6、<<(算术左移):高位溢出,符号位不变,0 补缺失的低位
(1)a << b 本质:a * 2b
7、>>>(逻辑右移 / 无符号右移):低位溢出,0 补缺失的高位
(1)没有 <<< 符号
符号扩充
1、以 8 位二进制数为例,在保持值不变的前提下,将其转换成 16 位和 32 位的二进制数
2、不管是正数还是用补数表示的负数,都只需用符号位的值(0 或者 1)填充高位即可
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战