QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 875|回复: 0
打印 上一主题 下一主题

小心==和~=运算符

[复制链接]
字体大小: 正常 放大

413

主题

36

听众

1854

积分

升级  85.4%

  • TA的每日心情
    开心
    2019-9-18 21:55
  • 签到天数: 258 天

    [LV.8]以坛为家I

    社区QQ达人

    群组2015国赛冲刺

    群组2016美赛公益课程

    群组国赛讨论

    群组第三届数模基础实训

    群组Matlab讨论组

    跳转到指定楼层
    1#
    发表于 2015-9-4 22:38 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta



    小心==~=运算符




    等于运算符==)如果两变量值相同将会返回变量值1,如果不同将返回0

    不等运算符~=)如果两变量值不同则返回1,相则返回0

    用这两个运算符比较两个字符串他是安全的,不会出现错误。但对两个数字数据的比较,将可能产生异想不到的错误。两个理论上相等的数不能有一丝一毫的差别,而在计算机计算的过程中出现了近似的现象,从而可能在判断相等与不相等的过程中产生错误,这种错误叫做round off错误。例如,考虑下面的两个数,两者均应等于0

    a = 0;

    b = sin(pi);

    因为这两个数在理论上相等的,所以关系式a==b应当返回值1。但在事实上,MATLAB计算所产生的结果的是

    >> a = 0;

    >> b = sin(pi);

    >> a == b

    ans =

    0

    MATLAB报告了ab不同因为他产生了一个round off错误,在计算中sin(pi)产生了结果1.2246×10-16而不是0。两个理论上相等的值因为roundoff错误而失之发生了细微的差别。

    我们可以通过检测两数之间在一定的范围内是不是近似相等,在这个精确范围内可能会产生round off错误。例如测试

    >> abs(a - b) < 1.0E-14

    ans =

    1

    将会产生正确的结果,不管在ab的计算中产不产生的round off错误。


    好的编程习惯

    在我们检测两数值是否相等时一定要小心,因为round off错误可能会使两个本来应该相等的值不相等了。这时你可以在round off错误的范围内它是不是近似相等。


    3.3.3 逻辑运算符

    逻辑运算符是联系一个或二个逻辑操作数并能产生一个逻辑结果的运算符。有三个二元运算符:分别为ANDOR和异或运算符,还有一个一元运算符NOT。二元逻辑运算的基本形式

    l1 op l2

    一元逻辑运算的基本形式为

    op l1

    l1l2代表表达式或变量,op代表表3.2中的逻辑运算符。如果l1l2的逻辑运算关系为true,那么运算将会返回值1,否则将会产生0

      
    3.2 逻辑运算符
      
      
    &
      
      
    逻辑与
      
      
    |
      
      
    逻辑或
      
      
    xor
      
      
    逻辑与或
      
      
    ~
      
      
    逻辑非
      


    运算的结果总结在真值表3.3中,它向我们展示每一种运算所有可能的结果。如果一个数的值不为0,那么MATLAB将把看作true,如

      
    3.3 逻辑真值表
      
    输入
    异或
      
    l1
      
    l2
    l1& l2
    l1| l2
    xor(l1,l2)
    ~l1
      
    0
      
      
    0
      
      
    0
      
      
    0
      
      
    0
      
      
    1
      
      
    0
      
      
    1
      
      
    0
      
      
    1
      
      
    1
      
      
    1
      
      
    1
      
      
    0
      
      
    0
      
      
    1
      
      
    1
      
      
    0
      
      
    1
      
      
    1
      
      
    1
      
      
    1
      
      
    0
      
      
    0
      

    果它为0,则其为false。所以~5的结果为0~0的结果为1


    在运算的顺序中,逻辑运算在所有的数学运算和关系运算之后进行。

    表达式中的运算顺序如下:
    1.所有的数学运算按照前面描述的顺序的进行。
    2.从左向右依次进行关系运算
    3.执行所有~运算
    4.从左向右依次进行&运算
    5.从左向右依次进行|运算和数学运算一样,括号能够改变括号的默认顺序。


    下面是关于逻辑运算的一些例子。

    3.1
    假设下面有三个变量被初始和一些表达式及其运算结果。

    value1 = 1

    value2 = 0

    value3 = -10

      
    逻辑表达式
      
      
    结果
      
      
    (a) ~value1
      
      
    0
      
      
    (b) value1 | value2
      
      
    1
      
      
    (c) value1 & value2
      
      
    0
      
      
    (d) value1 & value2 | value3
      
      
    1
      
      
    (e) value1 & (value2 |  value3)
      
      
    1
      
      
    (f) ~(value1 & value3)
      
      
    0
      

    因为~运算在其它的逻辑运算之前进行,那么(f)中的括号是必须的。如果去掉括号的话,(f)表达式将等价于(~value1)&value3


    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    数学中国版主团队!
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-1-1 12:57 , Processed in 0.465804 second(s), 51 queries .

    回顶部