当前位置:   article > 正文

2.79-写出函数mul3div4的代码_写出函数 mul3div4 的代码,对于整数参数 x,计算 3\*x/4 ,但是要遵循位级整数编码

写出函数 mul3div4 的代码,对于整数参数 x,计算 3\*x/4 ,但是要遵循位级整数编码

接题目:

对于整数参数x,计算3x/4,但是要遵循位级整数编码规则。你的代码计算3x也会产生溢出。

开始作答 官方答案(已验证)

#include <stdio.h>
#include <assert.h>
#include <limits.h>

/*Divide by power of 2.
Assume0<=k<w-1 */
int divide_power2(int x, int k) { 
	int is_neg = x & INT_MIN; 
	(is_neg && (x = x + (1 << k) - 1)); 
	return x >> k; 
}

int mul3div4(int x) {
	int mul3 = (x << 1) + x;
	return divide_power2(mul3, 2);
}

int main(int argc, char* argv[]) {
	int x = 0x87654321;
	assert(mul3div4(x) == x * 3 / 4); 
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号