主页 > 开源代码  > 

用算术右移操作实现整型数的除法

用算术右移操作实现整型数的除法

一个带符号整型数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。

标签:

用算术右移操作实现整型数的除法由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“用算术右移操作实现整型数的除法