pat L1-012. 计算指数

这篇博客介绍了一种使用C语言通过位运算快速计算2的n次方的方法,通过左移位运算符轻松得出结果。文章还详细解释了位运算的相关知识,包括按位与、按位或、按位异或、取反、左移和右移运算符的原理和应用场景,并给出了相应的C语言代码示例。
摘要由CSDN通过智能技术生成

真的没骗你,这道才是简单题 —— 对任意给定的不超过10的正整数n,要求你输出2n。不难吧?

输入格式:

输入在一行中给出一个不超过10的正整数n。

输出格式:

在一行中按照格式“2^n = 计算结果”输出2n的值。

输入样例:
5
输出样例:
2^5 = 32


脑补一下位运算,别人一行代码就出来的的题我还傻了吧唧的用打表还自以为很高效,时间的差距一下子就出来了,一定更快更广泛的了解更多的知识

#include <iostream>

using namespace std;

int main()
{
    int n;
    while(cin>>n)
    {
        long long s=1;
        s<<=n;
        cout<<"2^"<<n<<" = "<<s<<endl;
    }
    return 0;
}

位运算相关脑补

位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,intlong类型。
C语言提供的位运算符列表:
运算符含义描述
按位与      如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
按位或      两个相应的二进制位中只要有一个为1,该位的结果值为1
按位异或    若参加运算的两个二进制位值相同则为0,否则为1
取反        ~是一元运算符,用来对一个二进制数按位取反,即将01,将10
<< 左移       用来将一个数的各二进制位全部左移N位,右补0
>> 右移       将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,                 高位补0

1按位与运算符(&

    按位与是指:参加运算的两个数据,按二进制位进行运算。如果两个相应的二进制位都为1,

则该位的结果值为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false。按位与其

实与逻辑上的运算规则一致。逻辑上的,要求运算数全真,结果才为真。若,

A=true,B=true,AB=true 例如:3&5 3的二进制编码是11(2)。(为了区分十进制和其他进制,本文规

定,凡是非十进制的数据均在数据后面加上括号,括号中注明其进制,二进制则标记为2)内存储存数据

的基本单位是字节(Byte),一个字节由8个位(bit)所组成。位是用以描述电脑数据量的最小单位。二

进制系统中,每个01就是一个位。将112)补足成一个字节,则是000000112)。5的二进制编码是

1012),将其补足成一个字节,则是000001012
按位与运算:
 00000011(2)
&00000101(2)
 00000001(2)
由此可知3&5=1
c语言代码:
#include <stdio.h>
main()
{
 int a=3;
 int 5;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值