k<<=1具体是什么意思()
??给大家推荐个靠谱的公众号程序员探索之路,大家一起加油
文章图片
首先说明一个东西机器:0,1序列。
【k<<=1具体是什么意思()】位移操作建立在补码的基础之上。
1.无符号位移
无符号位移:左移,高位截去,低位补零。右移,高位补零,低位截去。
举个无符号位移的例子:
假设int i=3:转换成原码:0000 0011
i<<=1则表示将以上的二进制码往左移动一位,低位补零。结果是:0000 0110即十进制的6.
所以无符号位移有结论:i<<=n等价于i=i*(2的n次方);
i>>=n等价于i=i/(2的n次方)(n>=0)(暂不考虑溢出的情况)。
2.带符号位移(暂不考虑溢出的情况)
带符号位移正数和无符号位移没有区别(因为正数的补码和反码,只是在原码前加正数标识位0)。
带符号负数位移则不同(因为负数的补码是反码加一取得,反码是原码按位取反再在高位加上标识位1得到),左移是符号位不变,整体左移,低位补0,右移是符号位不变,整体右移,高位补1
推荐阅读
- 做一件事情的基本原理是什么()
- 「#1-颜龙武」区块链的价值是什么()
- 人生是什么(2015.9.8)
- 人生活着的意义到底是什么()
- 说睡
- 活跃社群的核心标准是什么()
- 2018-10-3晨间日记
- 2019-3-3晨间日记
- java简介|Java是什么(Java能用来干什么?)
- 2020-11-24晨间日记-24