主题:位运算初级
			
 阿戈戈
				 [专家分: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吗,如果是整数运算的话
							 
									
			
我来回复