设为首页 加入收藏

TOP

C语言中除以2的幂
2014-11-24 08:10:20 来源: 作者: 【 】 浏览:0
Tags:言中 除以 的幂

在大多数机器上,除法要比乘法(乘法需要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


int div16(int x);


void main(){
int x;
while(1){
printf("input an integer(exit with 0):\n");
scanf("%d",&x);
if(x == 0) break;
printf("div16(x) = %d\n",div16(x));
}
}


int div16(int x){
int bias = (x >> 31) & 0XF;
return (x + bias) >> 4;
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇判断C语言中int 与 unsigned 乘法.. 下一篇Android 480DP屏幕使状态栏始终显..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·About - Redis (2025-12-26 08:20:56)
·Redis: A Comprehens (2025-12-26 08:20:53)
·Redis - The Real-ti (2025-12-26 08:20:50)
·Bash 脚本教程——Li (2025-12-26 07:53:35)
·实战篇!Linux shell (2025-12-26 07:53:32)