什么是二进制?
十进制计数是以10为基数,二进制是以2为基数,二进制的数位就是2^n的形式。计算机为什么要用二进制数?
二进制数有表达能力强,抗干扰能力强的特点,适合逻辑运算。二进制的位操作
3.1 移位操作
左移:二进制数左移1位就是将数字翻倍。
右移:分为「逻辑右移」和「算数右移」。
在Java中最高位是「符号位」,符号位为0的时候表示正数,符号位为1表示负数。我们以32位的Java为例,数字53的二进制数位110101,从右往左数的第32位就是0.
那么-53的符号位就是-1.
那么这个时候向右移位,就会产生一个问题:对于符号位(特别是符号位为 1 的时候),我们是否也需要将其右移呢?因此,Java 里定义了两种右移,逻辑右移和算术右移。逻辑右移 1 位,左边补 0 即可。
算术右移时保持符号位不变,除符号位之外的右移一位并补符号位 1。补的 1 仍然在符号位之后。
3.2 逻辑操作
「或」:参与操作的位中只要有1,则最后的位为1.
「与」:参与操作的位中全是1,最后的结果才是1.
「异或」:参与的位相同则最后的结果为0,不同则为1.