邀请回答 我来回答

全部回答

(2)
默认 最新
强强强强强
"机器码你应该知道吧:就是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。"
2017年11月10日
已采纳 评论 点赞
ark_5196
k=k<<1 <<是位运算的运算符,相当于k=k*2
2017年11月9日
已采纳 评论 点赞

没解决?试试专家一对一服务

换一批