1.首先怎么心算快速的转换二进制?
接下来找规律比如:
1 转二进制是:1
2 转二进制是:10
4 转二进制:100
8 转二进制:1000
16 转二进制:10000
发现 2 的 n 次方有 (n+1)个数,
并且结果都为 1 和 n 个 0;
发现 2 进制的位数是这样的:512 256 128 64 32 16 8 4 2 1
接下来我们实战找一下:
84 转成二进制是:1010100
55 转成二进制是:110111
11 转成二进制是:1011
心算转二进制:
84 离 2 进制位数离谁最近?当然属 64,所以
64 的位数为 1,然后 84-64=20,20 离 16 最近,所以
32 的位数为 0,
16 的位数为 1,20-16=4,然后还剩 4,所以
8 的位数为 0,4 的位数为 1,4-4=0,没了,其他没有的补 0;
也就是 1010100
2.按左位移和右位移
按左位移(<<)找规律:
原理:转二进制后往左边移动位数,右边不够的位上补 0,左边溢出则移除
3 按左位移 1 位 3<<1 转二进制位移 11<<110=6
3 按左位移 2 位 3<<2 转二进制位移 11<<1100=12
3 按左位移 3 位 3<<3 转二进制位移 11<<11000=24
4 按左位移 1 位 4<<1 转二进制位移 100<<1000=8
4 按左位移 2 位 4<<2 转二进制位移 100<<10000=16
4 按左位移 3 位 4<<3 转二进制位移 100<<100000=32
发现规律为 m 的 n 次按左位移是 m 乘以 2 的 n 次方;
按右位移(>>)找规律:
原理:转二进制后往右边移动位数,右边超出的位移除,左边少了补 0
32 按右位移 1 位 32>>1 转二进制位移 100000>>10000=16
32 按右位移 1 位 32>>2 转二进制位移 100000>>1000=8
32 按右位移 1 位 32>>3 转二进制位移 100000>>100=4
发现规律为 m 的 n 次按右位移是 m 除以 2 的 n 次方;
(按符号右位移 >>> 不同的是左边少了补符号位,对于正数没关系,但是负数则是补 1)
3.与&和或 | 计算
按与(&)找规律:
原理:转二进制后 0 和 1 位数对比,含 0 则为 0,都是 1 才为 1
3&4 转二进制后 011&100=000 结果为 0
4&5 转二进制后 100&101=100 结果为 4
5&6 转二进制后 101&110=100 结果为 4
6&7 转二进制后 110&111=110 结果为 6
按或(|)找规律:
原理:转二进制后 0 和 1 位数对比,含 1 则为 1,都是 0 才为 0
3|4 转二进制后 011|100=111 结果为 7
4|5 转二进制后 100|101=101 结果为 5
5|6 转二进制后 101|110=111 结果为 7
6|7 转二进制后 110|111=111 结果为 7
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于