原码、反码、补码

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)填充高位即可

posted @   半条咸鱼  阅读(93)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示