• 位运算符、|和||、&和&&的区别


    一.位运算符操作的都是整数类型

    1.<<:左移,在一定范围内向左移动n位,相当于乘以2的n次幂

      左移不管是正数还是负数,都是在后面添0;

    2.>>:右移,在一定范围内向右移动n位,相当于除以2的n次幂,

       右移的话,正数移动n位,在左边补n位的0,负数移动n位的话,在左边补上n位的1;

    3.无符号右移:>>>,无论是正数还是负数,空缺位都是用0来补。

    4.异或:^:两者不相同则为1,两者相同则为0。 A=(A^B)^B

    二.|和||、&和&&的区别

    1.首先是|和||

    共同点:只要有任意一边的是true,那么结果就是true,当两边都是false的时候,结果是false

    不同点:|是两边都会运算,然后来判断结果;||是先运算左边的式子,如果为true,那么直接返回结果为true,如果左边的式子不为true,再去运算右边式子

    2.&和&&

    相同点:运算符的两边都是true的时候,结果才是true;

    不同点:&是两边都会运算,然后来判断结果;&&是先运算左边的式子,如果是false,直接返回结果为false,否则再去运算右边的式子,如果是true结果就是true,如果是false,结果就是false;

    三. 练习

    题目:交换两个变量的值

    方式一:定义临时变量

      int temp = num1;

      num1 = num2;

      num2 = temp;

    方式二:不能定义临时变量

      就像是在一片大海上,有两块浮冰,每块浮冰只能让一个人站立,现在每块浮冰上面站着一个人,现在想要让他们交换一下位置。可以先让A骑到B 的头上,然后让A在踏上之前B站立的浮冰上,此时B在踏上刚才A站立的浮冰上。

      num1 = num1+num2;

      num2 = num1-num2;

      num1 = num1-num2;

    优点:可以不用定义临时变量;

    缺点:num1+num2可能超出数值范围、只适用于数值型

    方式三:使用位运算符

      因为A=(A^B)^B,所以

      num1 = num1^num2;

      num2 = num1^num2;

      num1 = num1^num2;

    缺点:同样是只适用于数值型。

      

      

  • 相关阅读:
    微信坚硬的后脚跟
    [项目整理]Win32,MFC的可执行文件只能运行一次
    美司法部索要维基解密志愿者谷歌账户内容
    QML性能
    OSGi 的核心配置、动态化及问题
    OSGi 的由来和本质特性
    机器视觉与计算机视觉
    人工智能与深度学习
    活着就能改变世界
    选择与执行
  • 原文地址:https://www.cnblogs.com/wsxdev/p/11550817.html
Copyright © 2020-2023  润新知