【问题标题】:Change a value from 0->1 or 1->0 with only mathematic operations仅使用数学运算将值从 0->1 或 1->0 更改
【发布时间】:2011-11-02 10:07:56
【问题描述】:

我在 javascrit 上有一个变量,初始化为 0。我想做的是:

  • 如果值为0,则改为1;
  • 如果值为1,则改为0;

我会避免使用条件语句(如 if/else)来检查值是什么。

我想我只是通过一些 matematic 操作来做到这一点;我想到了一个 NOT 操作,但我不知道如何在没有

的情况下执行该操作

【问题讨论】:

  • 为什么要避免使用 if/else?有什么原因吗?
  • 没有具体原因。只是我认为有一种方法可以更快地将值从 0->1 或 1->0 更改,而无需先检查并设置值...
  • “快速”是指代码的性能吗?如果是这样,那么您正在寻找错误的结果:您的微优化并且您可能在代码的错误一侧进行。确保在尝试优化之前测量
  • @Joachim Sauer:你的解决方案看起来很棒。你不认为应用 SUM (1-x) 比检查变量快吗?而不是编辑值?

标签: javascript operators boolean-operations


【解决方案1】:
x = 1-x;

【讨论】:

    【解决方案2】:

    短异或语法:

    x ^= 1
    

    交换 0 到 1 和 1 到 0。

    【讨论】:

    • x ^= 0 返回 0
    • @mirik 它总是x ^= 1 - x 在 0 和 1 之间切换
    【解决方案3】:

    你可以使用异或运算符:

    x = x XOR 1;
    

    【讨论】:

    【解决方案4】:

    这里是另一种表示法,它也把真、假改为1、0。

    x = +x;
    

    如果要切换值

    x = +!x;
    

    【讨论】:

      【解决方案5】:

      如果变量是假设 i

      i = 1 - i,应该可以解决问题

      如果 i = 0, 1 - 0 = 1 比 i = 1

      如果 i = 1, 1 - 1 = 0 比 i = 0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-04
        • 2017-11-28
        • 1970-01-01
        • 2018-09-26
        • 1970-01-01
        相关资源
        最近更新 更多