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

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

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);
 }
相关文章
正宗馄饨馅怎么调制小窍门, 馄饨馅要想好吃,关键2味料不能省
2024-11-22 10:46:51
什么样的人不会高反? 9%的汉族人,不会有高反,你是其中之一吗?
2024-11-22 10:34:03
焖茄子怎么做好吃又简单?教你这样做,焦酥不吸油,营养又美味
2024-11-22 10:18:24
这才是最正宗的猪肚鸡做法,汤汁奶白,清甜鲜美巨好吃
2024-11-22 10:04:16
抗癌霸王“莴笋”?能杀死癌细胞,缓解化疗副作用?揭晓真相
2024-11-22 09:49:55
郑州工业应用技术学院是几本(河南二本文科投档线)
2024-11-22 09:34:29