主题:位运算初级
阿戈戈
[专家分:0] 发布于 2005-08-04 11:05:00
在位运算中,操作数每移动一位,其结果相当于操作数乘以几或除以几?
回复列表 (共5个回复)
沙发
Simple429 [专家分:240] 发布于 2005-08-08 14:47:00
没有一个确定的公式
板凳
Jonlee [专家分:160] 发布于 2005-08-08 15:32:00
左移一位相当与*2,但要考虑溢出的情况
右移一位相当于/2
3 楼
Simple429 [专家分:240] 发布于 2005-08-09 18:14:00
不对.
右移一位时不能相当于/2
例:127 = 01111111
右移后得 00111111 = 63
4 楼
Simple429 [专家分:240] 发布于 2005-08-09 18:28:00
应该是这样:
公式:
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 楼
Jonlee [专家分:160] 发布于 2005-08-17 18:19:00
127/2不就是63吗,如果是整数运算的话
我来回复