您的位置:首页 > 其它

k<<=1具体是什么意思?

2015-08-03 15:16 253 查看

首先说明一个东西机器:0,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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: