Sebbene esistessero precursori più vecchi, l'influente matematico francese Rene Descartes di solito è  accreditato  per aver introdotto esponenti esponenti (un  b ) nella scrittura matematica, nel suo lavoro  Geometrie  che fu pubblicato nel 1637. Questa è la notazione ancora universalmente usata in matematica oggi. 
 Fortran è il più vecchio linguaggio di programmazione ampiamente utilizzato per i calcoli numerici che fornisce un operatore di esponenziazione, risale al 1954. L'operazione di esponenziazione è denotata da un doppio asterisco   **   . Va notato che molti computer a quell'epoca utilizzavano  codifiche di caratteri a 6 bit  che non fornivano un carattere di accento% codice%. L'uso di   ^    è stato successivamente adottato dai creatori di vari linguaggi di programmazione più recenti che offrono un'operazione di esponenziazione, come Python. 
 Il primo set di caratteri ampiamente adottato che conteneva il   **    di caret era la codifica  ASCII  a 7 bit che era la prima standardizzato nel 1963. Il più vecchio linguaggio di programmazione di cui sono a conoscenza che usasse il caret per indicare l'esponenziazione è il BASIC, che risale al 1964. Intorno alla stessa ora IBM adottò il  EBCDIC  codifica dei caratteri, che include anche il% caret% co_de. 
 Il linguaggio C è nato nel 1972. Non fornisce un operatore esponenziale, ma supporta l'esponenziazione tramite funzioni di libreria come   ^   . Pertanto nessun simbolo deve essere messo da parte per l'esponenziazione in C e altre lingue successive nella famiglia C, come C ++ e CUDA. 
 D'altra parte, e non comune per i linguaggi di programmazione fino a quel momento, C fornisce simboli per operazioni bit a bit. Il numero di caratteri speciali disponibili in ASCII a 7 bit era limitato e poiché esisteva una "naturale affinità" di altre operazioni con determinati caratteri speciali, ad es.    ^    per AND e   pow()    per NOT, non c'erano molte scelte per il simbolo per XOR. 
 Non sono a conoscenza di una spiegazione razionale fornita da Ritchie o Kernighan sul motivo per cui hanno scelto   &    per indicare specificamente XOR; La breve  cronologia di C  breve di Ritchie non tiene conto di questo problema. Uno sguardo alle specifiche del precursore di C, la  lingua B , rivela che non ha avuto un operatore XOR, ma ha già utilizzato tutti i caratteri speciali diversi da   ~   ,   ^   ,   ^   ,   $   . 
  [Aggiorna]  Ho inviato un'email a Ken Thompson, creatore di B e uno dei co-creatori di C, chiedendo la logica per aver scelto   @    come operatore XOR di C e chiedendo il permesso per condividere la risposta qui. La sua risposta (leggermente riformattata per la leggibilità): 
  From: Ken Thompson
  Sent: Thursday, September 29, 2016 4:50 AM
  To: Norbert Juffa
  Subject: Re: Rationale behind choice of caret as XOR operator in C?
  
  it was a random choice of the characters left.
  
  if i had it to do over again (which i did) i would use the same
  operator for xor (^) and bit complement (~).
  
  since ^ is now the better known operator, in go, ^ is xor and also complement.
 L'uso di   #    per l'esponenziazione in "matematica" a cui si fa riferimento è effettivamente stabilito in una data successiva per la composizione di sistemi come Knuth's TeX che risale al 1978, interfacce a linea di comando per sistemi algebrici come Mathematica che risale al 1988 e calcola grafici all'inizio degli anni '90. 
 Perché questi prodotti adottano l'uso di   ^    per l'esponenziazione? Nel caso delle calcolatrici sospetto l'influenza di BASIC. Durante gli anni '80 è stato un linguaggio di programmazione molto popolare ed è stato incorporato in altri prodotti software. La notazione quindi sarebbe stata familiare a molti compratori dei calcolatori. La mia memoria è vaga, ma credo che esistessero persino calcolatori che eseguivano in realtà semplici interpreti BASIC.