第3关:位运算符

目录

任务描述

相关知识

&按位与

|按位或

^按位异或

~按位取反

<<左移动

>>右移动

编程要求

测试说明


任务描述

程序中所有的数都是以二进制形式存储在计算机中的。例如,a = 13转化成二进制就是a = 1101,每一个数称为一位。位运算就是对二进制按位进行运算。本关的任务就是让学习者了解并能运用 Python 中的位运算符来进行运算。

相关知识

Python 中的位运算符包括如下六种:

  • &:按位与;

  • |:按位或;

  • ^:按位异或;

  • ~:按位取反;

  • <<:左移动;

  • >>:右移动。

&按位与

将两个二进制数按位进行逻辑与,对应位都为1时则结果为1,否则为0,最后得出结果。例如,a = 10,二进制数为a = 1010b = 8,二进制数为b = 1000,按位与的结果为a & b = 1000,换成十进制结果为8

|按位或

将两个二进制数按位进行逻辑或,对应位中有一个为1则结果为1,两个都为0则结果为0,最后得出结果。例如,a = 12,二进制数为a = 1100b = 8,二进制数为b = 1000,则其按位或的结果为a | b = 1100,换成十进制结果为12

^按位异或

将两个二进制数按位进行逻辑异或,对应位不同结果为1,相同为0,最后得出结果。例如,a = 12,二进制数为a = 1100b = 8,二进制数为b = 1000,则其按位异或的结果为a ^ b = 0100,换成十进制结果为4

~按位取反

将一个二进制数按位进行取反,当前位为1,则取反为0,当前位为0,则取反为1,最后得出结果。例如,a = 18,二进制数为a = 10010,则其按位取反的结果为~a = 01101,换成十进制结果为13

<<左移动

将一个二进制数进行左移,就是按二进制形式把所有的数字全部向左移动对应的位数,移动时高位舍弃,低位补零。例如,a = 3,二进制数为a = 0011,则其向左移动两位的结果为a << 2 = 1100,换成十进制结果为12

>>右移动

将一个二进制数进行右移,就是按二进制形式把所有的数字全部向右移动对应的位数,移动时低位舍弃,高位补符号位。例如,a = 4,二进制数为a = 0100,则其向右移动两位的结果为a >> 2 = 0001,换成十进制结果为1

如果您想了解更多运算符相关知识,请参考:[美] Katie Cunningham 著《 Python 入门经典》第二章。

编程要求

本关的编程任务是补全bit.py文件中的代码,实现如下功能:

  • 计算两个输入变量bitonebittwo按位与的值;

  • 计算两个输入变量bitonebittwo按位或的值;

  • 计算两个输入变量bitonebittwo按位异或的值;

  • 计算一个输入变量bitone按位取反的值;

  • 计算一个输入变量bittwo左移动两位的值;

  • 计算一个输入变量bittwo右移动两位的值。

本关涉及的代码文件框架如下:

 
  1. # 定义位运算处理函数bit, 其中bitone和bittwo两个参数为需要进行位运算的变量,由测试程序读入。
  2. def bit(bitone,bittwo):
  3. # 请在此处填入将bitone,bittwo按位与的代码,并将运算结果存入result变量
  4. ########## Begin ##########
  5. ########## End ##########
  6. print(result)
  7. # 请在此处填入将bitone,bittwo按位或的代码,并将运算结果存入result变量
  8. ########## Begin ##########
  9. ########## End ##########
  10. print(result)
  11. # 请在此处填入将bitone,bittwo按位异或的代码,并将运算结果存入result变量
  12. ########## Begin ##########
  13. ########## End ##########
  14. print(result)
  15. # 请在此处填入将bitone按位取反的代码,并将运算结果存入result变量
  16. ########## Begin ##########
  17. ########## End ##########
  18. print(result)
  19. # 请在此处填入将bittwo左移动两位的代码,并将运算结果存入bittwo变量
  20. ########## Begin ##########
  21. ########## End ##########
  22. print(bittwo)
  23. # 请在此处填入将bittwo右移动两位的代码,并将运算结果存入result变量
  24. ########## Begin ##########
  25. ########## End ##########
  26. print(result)

测试说明

本关的测试文件是src/step3/bittest.py文件,测试的具体过程如下:

  1. 学习者将src/Step3/bit.py中的代码补充完毕,然后点击评测。平台自动编译运行bittest.py,以标准输入方式提供测评输入,并调用在bit中实现的函数;

  2. 平台获取程序的输出,然后将其与预期输出对比。如果一致则测试通过,否则测试失败。

以下是平台对src/step3/bittest.py的样例测试集: 测试输入:

 
  1. 12
  2. 6

预期输出:

 
  1. 4
  2. 14
  3. 10
  4. -13
  5. 24
  6. 1

开始你的任务吧,祝你成功!

# 定义位运算处理函数bit, 其中bitone和bittwo两个参数为需要进行位运算的变量,由测试程序读入。
def bit(bitone,bittwo):
    # 请在此处填入将bitone,bittwo按位与的代码,并将运算结果存入 变量
    ########## Begin ##########
    result=bitone & bittwo

    ########## End ##########
    print(result)

    # 请在此处填入将bitone,bittwo按位或的代码,并将运算结果存入result变量
    ########## Begin ##########
    result=bitone | bittwo

    ########## End ##########
    print(result)

    # 请在此处填入将bitone,bittwo按位异或的代码,并将运算结果存入result变量
    ########## Begin ##########
    result=bitone ^ bittwo

    ########## End ##########
    print(result)

    # 请在此处填入将bitone按位取反的代码,并将运算结果存入result变量
    ########## Begin ##########
    result= ~bitone

    ########## End ##########
    print(result)

    # 请在此处填入将bittwo左移动两位的代码,并将运算结果存入result变量
    ########## Begin ##########
    result=bittwo << 2

    ########## End ##########
    print(result)

    # 请在此处填入将bittwo右移动两位的代码,并将运算结果存入result变量
    ########## Begin ##########
    result=bittwo >> 2

    ########## End ##########
    print(result)

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

STM32单片机定制

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值