csapp2e homework 2.77

#include<stdio.h>
#define debug_print(x) printf(#x"\t%d\n",x)

int divide_power2(int x,int k)
{
	int w = sizeof(int) << 3;
	int sign = x >> (w - 1) ;
	int result;
	( sign == 0 && (result = (x >> k)) ) || ( sign == -1 && (result = ((x + (1 << k)-1)>> k)) );
	return  result;
}

int main()
{
	debug_print(100>>3);
	debug_print(divide_power2(100,3));
	debug_print(-100>>3);
	debug_print(divide_power2(-100,3));
	return 0;
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。