Mặc dù có những tiền thân cũ hơn, nhà toán học người Pháp có ảnh hưởng Rene Descartes thường được ghi nhận đã đưa các số mũ được viết lại (a b ) vào văn bản toán học, trong tác phẩm Geometrie được xuất bản năm 1637. Đây là ký hiệu vẫn được sử dụng phổ biến trong toán học ngày nay.
Fortran là ngôn ngữ lập trình lâu đời nhất được sử dụng rộng rãi cho các tính toán số cung cấp toán tử lũy thừa, nó có từ năm 1954. Hoạt động lũy thừa được biểu thị bằng dấu hoa thị kép **
. Cần lưu ý rằng nhiều máy tính tại thời điểm đó đã sử dụng mã hóa ký tự 6 bit không cung cấp ký tự dấu mũ ^
. Việc sử dụng **
sau đó đã được chấp nhận bởi những người tạo ra các ngôn ngữ lập trình gần đây hơn cung cấp một hoạt động lũy thừa, chẳng hạn như Python.
Bộ ký tự được chấp nhận rộng rãi đầu tiên có chứa dấu mũ ^
là mã hóa ASCII 7 bit được chuẩn hóa lần đầu tiên vào năm 1963. Ngôn ngữ lập trình lâu đời nhất mà tôi biết là đã sử dụng dấu mũ để biểu thị lũy thừa là BASIC, xuất hiện từ năm 1964. thời gian IBM chấp nhận mã hóa ký tự EBCDIC , bao gồm cả dấu mũ ^
.
Ngôn ngữ C ra đời vào năm 1972. Nó không cung cấp toán tử lũy thừa, thay vào đó nó hỗ trợ lũy thừa thông qua các hàm thư viện như pow()
. Do đó, không có ký hiệu nào cần được đặt sang một bên cho phép lũy thừa trong C và các ngôn ngữ khác, sau này, các ngôn ngữ trong họ C, chẳng hạn như C ++ và CUDA.
Mặt khác, và không phổ biến cho các ngôn ngữ lập trình cho đến thời điểm đó, C cung cấp các ký hiệu cho các hoạt động theo bit. Số lượng ký tự đặc biệt có sẵn trong ASCII 7 bit bị giới hạn và do có "mối quan hệ tự nhiên" với các hoạt động khác đối với một số ký tự đặc biệt, ví dụ &
cho AND và ~
KHÔNG, không có nhiều sự lựa chọn cho biểu tượng cho XOR .
Tôi không biết về một lý do được công bố do Ritchie hoặc Kernighan cung cấp về lý do tại sao họ chọn ^
biểu thị XOR một cách cụ thể; Lịch sử ngắn về C của Ritchie im lặng về vấn đề này. Một cái nhìn tại các đặc điểm kỹ thuật cho các tiền thân của C, ngôn ngữ B , cho thấy rằng nó không có một nhà điều hành XOR, nhưng đã sử dụng tất cả các ký tự đặc biệt khác hơn ^
, $
, @
, #
.
[Cập nhật] Tôi đã gửi email đến Ken Thompson, người tạo ra B và là một trong những người đồng sáng tạo của C, tìm hiểu về lý do chọn ^
làm nhà điều hành XOR của C và xin phép chia sẻ câu trả lời tại đây. Trả lời của anh ấy (hơi được định dạng lại để dễ đọc):
Từ: Ken Thompson
gửi: Thứ 5 29 Tháng Chín, 2016 04:50
Để: Norbert Juffa
Subject: Re: Lý do đằng sau sự lựa chọn của caret như XOR điều hành trong C?
đó là một sự lựa chọn ngẫu nhiên của các nhân vật còn lại.
nếu tôi có nó để làm lại (mà tôi đã làm) tôi sẽ sử dụng cùng một toán tử cho xor (^) và bit bổ sung (~).
vì ^ bây giờ là toán tử được biết đến nhiều hơn, nên, ^ là xor và cũng là bổ sung.
Việc sử dụng ^
lũy thừa trong "toán học" mà bạn đề cập thực ra là việc sử dụng được thiết lập vào một ngày sau đó cho các hệ thống sắp chữ như Knuth's TeX có từ năm 1978, giao diện dòng lệnh cho các hệ thống đại số như Mathicala có từ năm 1988 và vẽ đồ thị máy tính vào đầu những năm 1990.
Tại sao các sản phẩm này chấp nhận sử dụng ^
cho lũy thừa? Trong trường hợp máy tính tôi nghi ngờ ảnh hưởng của BASIC. Trong suốt những năm 1980, đây là ngôn ngữ lập trình đầu tiên rất phổ biến và cũng được nhúng vào các sản phẩm phần mềm khác. Do đó, ký hiệu sẽ quen thuộc với nhiều người mua máy tính. Trí nhớ của tôi rất mơ hồ, nhưng tôi tin rằng thậm chí còn có các máy tính thực sự chạy các trình thông dịch BASIC đơn giản.