当前位置:网站首页>C语言中关于2的n次方求值问题(移位运算)

C语言中关于2的n次方求值问题(移位运算)

2022-08-02 03:22:00 凉世弥音九月秋

最近,看到一个有趣的题目:不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算
起初,我看到这道题是一脸懵逼,后来查阅资料后发现就是一道简单的移位运算题。
好啦话不多说,放图:

#include<stdio.h>
int main(void) 
{
    
	int num;
	int p;
	while (scanf("%d", &num)) {
    
		p = 1 << num;
		printf("%d\n",p);
	}
	return 0;
}

其中移位运算包括左移和右移

  • 左移运算:x<<k:x左移k位,并在右端补零

  • 右移运算(逻辑):x>>k:x右移k位,并在左端补零

  • 右移运算(算术):a.x>>k:x右移k位,并在左端补零(注意:此时符号位应为0,即正)
                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                             b.x>>k:x右移k位,并在左端补1(注意:此时符号应为1,即负)

参数x10010101
x<<201010100
x>>2(逻辑)00100101
x>>2(算术)11100101
原网站

版权声明
本文为[凉世弥音九月秋]所创,转载请带上原文链接,感谢
https://blog.csdn.net/p2141548684/article/details/125818472