用算术右移操作实现整型数的除法
- 开源代码
- 2025-08-24 09:42:01

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