Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / C语言中除以2的幂

在大多数机器上,除法要比乘法(乘法需要10个或更多时钟周期)更慢,需要30个或更多的时钟周期。除以2的幂可以用移位运算来实现,只需要一个时钟周期。无符号和补码数分别使用逻辑移位和算术移位来达到目的。整数除法总是舍入到零。对于使用算术右移的补码机器,C表达式:x / y = ( x < 0 ? ( x + ( 1 << k ) - 1 ) : x ) >> k。(其中,y = 2k )下面是x/16的C语言实现:/*
习题2.42
开发环境VC++6.0
*/
#include<stdio.h>int div16(int x);void main(){
 int x;
 while(1){
  printf("input an integer(exit with 0): ");
  scanf("%d",&x);
  if(x == 0) break;
  printf("div16(x) = %d ",div16(x));
 }
}int div16(int x){
 int bias = (x >> 31) & 0XF;
 return (x + bias) >> 4;
}