首页 生活百科 美食推荐 汽车百科 星座运势 旅游攻略 数码科技 教育资讯 宠物知识 养花知识 健康知识 周公解梦 热门影视 消费指南
当前位置: 首页 > 生活百科 >

二进制算法口诀怎么用(玩转算法面试之二进制运算)

100次浏览     发布时间:2024-11-11 09:33:54    



坚持

&,两位同时为1时结果为1,否则为0。

|,两位同时为0时结果为0,否则为1。

异或

^,两位相等结果为0,不相等为1。

~,一元运算符,取反,即1返回0、0返回1。~1=-2

Java中的左移(<<)

将二进制数字向左移动,移动几位就在最右侧补多少个0。例如 3<<1,因为3的二进制表示形式为11,向左移动一位后变为110,所以 3<<1=6。左移n位相当于乘上2的n次方。左移,按位左移,低位补0,溢出位忽略。

带符号右移(>>)

将二进制数字向右移动,移动几位就在最右侧消去多少个比特位,并最左侧填充符号位。例如 3>>1,因为3的二进制表示形式为011,所以向右移动一位后变为001,所以 3>>1=1。例如 -3>>1,因为-3的二进制补码表示为
111111111111111111111111111111011 2,所以带符号向右移动一位后变为
11111111111111111111111111111110,对应的数字为-2,所以 -3>>1=-2。1左移一位会变成0,0左移依旧为0

无符号右移(>>>)

将二进制数字向右移动,移动几位就在最右侧消去多少个比特位,并最左侧填充0

例如 -3>>>1,因为-3的二进制补码表示为
11111111111111111111111111111101,所以无符号向右移动一位后变为
01111111111111111111111111111110,对应的数字为2147483646,所以 -3>>>1=2147483646

Java数值运算过程中都是先将十进制转换为二进制然后再进行运算,再把二进制数据转换为十进制展现给用户。二进制运算规则如下:

对于有符号的而言,最高位为符号位,0表示正数,1表示负数

  • 正数的原码,反码和补码都一样,三码合一
  • 负数的反码:符号位保持不限,其他位取反
  • 负数的补码:补码 + 1

特殊的:0的反码和补码都是0(可以考虑下为什么?可以借助最后的代码进行验证)

计算机的运算的时候,都是将原码转成补码进行运算的

  下面以 -1 为例子展示原码、反码和补码的转换关系(以int数据类型为例,int类型在Java中占4字节,32位)

Java打印二进制编码:

public class BinaryTest {
    public static void main(String[] args) {
        print(1);
        System.out.println();
      	print(-1);
    }

    static void print(int num) {
      // 从第32位开始进行异或(原数值中是1的留下)
        for (int i = 31; i >= 0; i--) {
            System.out.print((num & 1 << i) == 0 ? "0" : 1);
        }
    }
}

小思考:

# 问题:
Integer.MAX_VALUE的相反数
Integer.MIN_VALUE的相反数

# 打印下尝试下吧~
public static void main(String[] args) {
        print(Integer.MIN_VALUE);
        System.out.println();
        print(-Integer.MIN_VALUE);
 }
相关文章
计算机学校哪家好(计算机领域的七大梯队院校)
2024-11-13 11:15:13
3D动画制作软件有哪些(三维动画制作工具有哪些)
2024-11-13 11:00:35
男声优怎么训练(小技巧快速提升你的配音能力)
2024-11-13 10:33:50
中元节是鬼节吗有什么讲究吗(中元节是凶日6件事别犯忌讳)
2024-11-13 10:18:53
茭白是什么植物(有关菰、菰米、茭白的一些知识,可以了解下)
2024-11-13 10:04:05
咖啡机怎么用图解(智能自助现磨咖啡机使用方法及注意事项?)
2024-11-13 09:49:25