Answers:
虽然有年龄较大的前体,具有影响力的法国数学家笛卡尔通常记为引入上标指数(一b)为数学写作,在他的作品几何学这是发表在1637年这仍然是普遍在数学今天使用的符号。
Fortran是最广泛用于数值计算的最古老的编程语言,提供了幂运算符,其历史可以追溯到1954年。幂运算用双星号表示**
。应该注意的是,当时许多计算机使用的6位字符编码不提供脱字符号^
。随后使用的**
是各种提供幂运算的较新编程语言的创建者,例如Python。
包含插入符号的第一个被广泛采用的字符集是1963年首次标准化^
的7位ASCII编码。据我所知,最早使用编程符号表示指数的编程语言是BASIC,该语言可追溯到1964年。 IBM当时采用EBCDIC字符编码,其中还包括插入符号^
。
C语言于1972年问世。它不提供幂运算符,而是通过诸如的库函数支持幂运算pow()
。因此,在C语言以及后来的C系列其他语言(例如C ++和CUDA)中,不需要为符号取舍而留出任何符号。
另一方面,对于当时的编程语言,这并不常见,C提供了按位运算的符号。7位ASCII中可用的特殊字符数量受到限制,并且由于其他操作与某些特殊字符之间存在“自然亲和力”,例如&
AND和~
NOT,因此XOR符号没有太多选择。
我不知道Ritchie或Kernighan提供的公开理由,说明他们为什么选择^
专门表示XOR。里奇(Ritchie)的C短历史对此问题无语。一看规范的前身C,对B语言,表明它没有一个XOR运算符,但已经使用的所有特殊字符以外^
,$
,@
,#
。
[更新]我向B的创建者兼C的共同创建者之一Ken Thompson发送了电子邮件,询问选择^
C的XOR运算符的理由,并请求在此处分享答案。他的答复(为便于阅读而略微重新格式化):
发件人:肯·汤普森(Ken Thompson)
发送:2016年9月29日,星期四4:50
收件人:诺伯特·乔法(Norbert Juffa)
主题:回复:在C语言中选择插入符号作为XOR运算符的理由是什么?这是剩余字符的随机选择。
如果我要再做一次(我做了),我将对xor(^)和位补码(〜)使用相同的运算符。
由于^现在是众所周知的运算符,因此在go中,^是xor且也是补数。
^
您所指的在“数学”中使用幂运算实际上是在较晚的日期用于排版系统(例如Knuth的TeX,其日期为1978),代数系统的命令行界面(例如,Mathematica的日期为1988)以及图形化的1990年代初期的计算器。
为什么这些产品采用对^
进行幂运算?对于计算器,我怀疑BASIC的影响。在整个1980年代,它是一种非常流行的第一语言,并且还嵌入到其他软件产品中。因此,该符号对于许多计算器购买者来说是熟悉的。我的记忆模糊,但是我相信甚至有实际上运行简单的BASIC解释器的计算器。
^
用于上标。对我来说,上标使用“上”字符,下标使用“下”字符(_
)对我来说很有意义。
^
建议使用向上箭头,这又暗示了上标指数的传统位置,因此有点自然。我确定Donald Knuth会回复一封电子邮件,询问他决定^
在TeX中使用幂运算的决定,但是鉴于他正忙于处理更重要的事情,例如完成TAOCP,我不想采取这一步骤(我确实考虑过它)。