用算术右移操作实现整型数的除法
一个带符号整型数x(二进制表示为w位),除以 
。整数除法总是舍入到0。结果与x算术右移k位的结果相等。不过,当
时,
需要加偏置量
,然后算术右移k位,才能实现向0舍入。把
强制转换位浮点型,直接用除法得到结果比较,就是把小数部分舍掉了。
源程序
int divus(int x,int n);
void main()
 {
     int x, y, k, rx, rxx, ry, ryy;
     float sx, sy;
     x=12340; y=-12340;
     k=4;
     rx=x/(2<<(k-1));    //
     rxx=divus(x,k);
     sx=(float)x/(2<<(k-1));
     ry=y/(2<<(k-1));  //
     ryy=divus(y,k);
     sy=(float)y/(2<<(k-1));    
 }
int divus(int x,int n)   //将x右移n位
 {
     int bias;
     if(x>=0) 
         return  x>>n;
     else 
         bias=2<<(n-1)-1;
       return (x+bias)>>n;
 }
 执行结果
rx=rxx=0x0303=771, sx=771.25;
ry=ryy=0xFCFD=-771, sy=-771.25。
