回 帖 发 新 帖 刷新版面

主题:位运算初级

在位运算中,操作数每移动一位,其结果相当于操作数乘以几或除以几?

回复列表 (共5个回复)

沙发

没有一个确定的公式

板凳

左移一位相当与*2,但要考虑溢出的情况
右移一位相当于/2

3 楼

不对.
右移一位时不能相当于/2
例:127 = 01111111
右移后得 00111111 = 63

4 楼

应该是这样:
公式:
1) 左移结果 = 原操作数 * 2 - 首位*256;
2) 右移结果 = 原操作数 / 2 + 末位*0.5;

例1:   31 = 00011111
左移一位得 31*2 - 0*256 = 62 = 00111110
右移一位得 31/2 + 1*0.5 = 16 = 00001111

例2:   248 = 11111000
左移一位得 248*2 - 1*256 = 240 = 11110000
右移一位得 248/2 + 0*0.5 = 124 = 01111100

5 楼

 127/2不就是63吗,如果是整数运算的话

我来回复

您尚未登录,请登录后再回复。点此登录或注册