zoukankan      html  css  js  c++  java
  • 位运算符、|和||、&和&&的区别

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

    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;

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

      

      

  • 相关阅读:
    linux CGI GET POST 用户登录
    linux内核 简化版ksetexample.c解析
    定制.vimrc配置文件
    procfs信息读取实现案例
    基于Extent 的文件存储(fiemap)
    inode_operations介绍
    Linux 文件系统概述
    linux硬链接与软连接的区别
    procfs读写信息实例
    VC 常见问题百问 20080129 13:37 271人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/wsxdev/p/11550817.html
Copyright © 2011-2022 走看看