C语言中除以2的幂
来源:互联网 发布:淘宝怎么关闭花呗 编辑:程序博客网 时间:2024/05/16 10:50
在大多数机器上,除法要比乘法(乘法需要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):\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语言中除以2的幂
- C语言 负数除以正数, 与正数除以负数的 余数和商 的正负
- c编程中出现除以0的情况,-1.#IND00000
- [C语言]编译器是不是帮我们优化了乘或除以用2^x表示数的指令?
- 随笔十九:除以 2 的幂
- 无符号数除以2的幂
- 有符号数除以2的幂
- 有符号数除以-2的幂
- 整数除法(除以2的幂, 除以非2的幂)
- 1017. A除以B (20)——C语言
- PAT乙级 1017. A除以B C语言
- c语言之同余定理的应用求2001的2003次方除以13的余数
- c语言同余定理的应用:三个大数除以m得到相同的余数,求m最大的数值
- ios中除以0的问题
- 无符号数除以非2的幂
- 有符号数除以非2的幂
- python中整数除以整数的结果是取整数
- 100个数中除以10后,等于i的个数
- POJ2159 Ancient Cipher
- C语言文件位置标记的定位
- 将两个有序链表合并为一个有序链表
- 直接插入排序算法
- 【thinkphp3.x】thinkphp3.x中G方法的标记位置和区间统计的功能
- C语言中除以2的幂
- 编辑距离
- 【编程之美】读书笔记:寻找最大的K个数[转帖]
- 机器分配问题
- Ubuntu 11.10 gnome classic自定义面板方法
- 安卓开发中如何在XML文件中定义动画
- 全国各大小OJ
- 【thinkphp3.x】thinkphp3.x中页面压缩输出支持
- 矩阵的快速幂