【问题标题】:GNU bc: -2^3 == -8, but -2^4 == 16?GNU bc:-2^3 == -8,但 -2^4 == 16?
【发布时间】:2014-05-18 08:33:36
【问题描述】:

目前我正在通过极好的CS:APP 工作,因此在做一些补码练习时出现了一个奇怪的问题。

GNU bc 1.06,默认设置 - 无标志:

-2 ^ 3
-8

...但后来...

-2 ^ 4
16

问题

为什么-2 ^ 4 等于正16?我把它插入谷歌的计算器功能,我确实得到了-16。

我可能已经再次打开了我脑海中的镜头盖(关于小指和大脑),但是对于这种行为的任何提示都是值得赞赏的。

谢谢

sc.

【问题讨论】:

  • 因为数学。
  • 感谢@Raedwald 的简洁而准确的回答 :-)
  • 数学中通常的约定是将 -2^4 解读为 -(2^4) = -16,但一些程序和计算器(包括bc)将其解读为 (-2)^ 4 = 16。如有疑问,请使用括号。

标签: math computer-science bc


【解决方案1】:

您很可能在输入公式时犯了错误。我敢打赌,您的评价如下:

-(24) = -1 × 24 = -16

当求解带负数的幂时,有一个简单而通用的规则:

  • 如果您的指数是奇数,您的结果将是
  • 如果您的指数是偶数,您的结果将是

这仅仅是因为一个负数与另一个负数相乘得到一个正数。

-1 × -1 = 1

-1 × 1 = -1

-21 = (-2)

-22 = (-2) × (-2)

-23 = (-2) × (-2) × (-2)

-24 = (-2) × (-2) × (-2) × (-2)

让我们从其中一个乘法开始:

(-2) × (-2) = 4

因此:

(-2) × (-2) × (-2) × (-2) = 4 × 4 = 16

编辑:

出于兴趣,我尝试将其放入出色的 Wolfram Alpha 中,但它以类似的方式混淆:

  • (-2)^x(解释为(-2)x

  • -2^x(解释为-(2x)

【讨论】:

  • 我喜欢你为此付出的努力。
  • 最好说这是一个幂函数,如果指数为偶数,则该函数为偶数,如果指数为奇数,则该函数为奇函数。不使用正数、负数或指​​数项。
  • @user2485710 假设提出问题的用户理解幂函数、偶函数和奇函数这些术语,我认为在这种情况下我们不能认为这是理所当然的。
  • @user2485710 这对您有什么帮助?什么是偶函数奇函数
  • @Mario 这是你所说的更精确的术语,“如果你的指数是奇数,你的结果将是负数”它在数学术语中并不完全正确。但这只是我迂腐。
【解决方案2】:

因为 (-2)·(-2)·(-2)·(-2) = 16

【讨论】:

    【解决方案3】:

    Google 说它是 -16,因为它将问题解释为 -(2^4),即 -(16)

    【讨论】:

      【解决方案4】:

      显然,bc 给出了否定优先于乘法运算的减号,也就是说,它将这个减号视为数字的一部分。我相信相反的约定更为普遍,即将否定视为从零减去,因此求幂优先于否定。

      事实上,在 bc 中,0-2^4 按预期返回 -16,而 0+-2^4 不是语法错误,结果再次返回 16。

      所以 -2^4 的两种读法在相应的约定中都是正确的,选择哪一种是口味问题,唯一重要的是要保持一致,如果使用 bc 变体,请正确宣布.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-04
        • 2011-10-17
        • 2021-04-25
        • 2021-05-30
        • 1970-01-01
        • 2021-02-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多