Migliore risposta
Dato che viene chiesto sotto largomento Ingegneria del software, forse possiamo parlare di rappresentazione.
Otto bit di dati (dove un bit è un interruttore che rappresenta un 1 o uno 0) possono contenere un numero intero senza segno come segue:
0 = 00000000
1 = 00000001
2 = 00000010
4 = 00000100
8 = 00001000
16 = 00010000
256 = 10000000
511 = 11111111
Quindi i nostri 8 bit di dati possono contenere un numero intero senza segno grande come 255 e piccolo come 0. Tuttavia, le applicazioni del mondo reale possono richiedere numeri negativi oltre a numeri positivi.
Per accogliere interi con segno, dobbiamo rinunciare a parte della nostra memoria. Ci sono diversi schemi che lo fanno.
Lo schema più semplice sarebbe usare il primo bit per rappresentare il segno (diciamo che zero è positivo e 1 è negativo). Questo ha la divertente conseguenza di avere un valore zero positivo e uno negativo.
+ 0 = 00000000
- 0 = 10000000
1 = 00000001
- 1 = 10000001
+ 2 = 00000010
- 2 = 10000010
+ 64 = 01000000
- 64 = 11000000
+127 = 01111111
Questo ci permette di memorizzare numeri da Da -127 a +127, ovvero 255 numeri (compreso 0).
Un altro modo per farlo è utilizzare quello che viene chiamato un-complemento archiviazione. Per questo, il numero negativo è la sequenza di bit opposta al numero positivo.
Ad esempio:
0 = 00000000
0 = 11111111
2 = 00000010
- 2 = 11111101
Laritmetica con numeri negativi ci consente di sommare i due numeri. Ad esempio 2 + -2 diventa
+ 2 = 00000010
-2 = 11111101
--------------
= 11111111
che abbiamo visto in precedenza era zero. Quindi lintervallo che possiamo memorizzare in questa rappresentazione con 8 bit sono i numeri interi compresi tra -127 e +127, o 255 numeri (poiché includiamo zero come numero singolo).
Poiché il negativo di zero è zero , ci sono ancora due rappresentazioni di zero. È un po dispendioso, quindi per aggirare questo problema, viene utilizzato twos-complement . Questo prende il numero negativo con complemento a uno e ne aggiunge uno. In questa rappresentazione
0 = 00000000
2 = 00000010
- 2 = 11111110
- 1 = 11111111
1 = 00000001
-128 = 10000000
127 = 01111111
-127 = 10000001
Quindi lintervallo che possiamo memorizzare in questa rappresentazione con 8 bit sono gli interi compresi tra -128 e +127, o 256 numeri in totale. Lutilizzo di questo schema ci consente di utilizzare più efficacemente tutte le combinazioni, il che può essere molto importante se vogliamo utilizzare al meglio le risorse che rappresentano cose fondamentali come gli interi con segno.
Ci sono altre forme di numeri con segno rappresentazioni di numeri interi che possono essere visualizzate in Rappresentazioni di numeri con segno – Wikipedia .
Risposta
Innanzitutto, nessuna soluzione con numero uguale a zero.
Se sono entrambi zero, i due lati non sono definiti. (Puoi chiamarla una soluzione se lo desideri, non lo farò.)
Se uno è zero e laltro è positivo, allora un lato è zero e laltro è uno.
Se uno è zero e laltro è negativo, allora un lato è uno e laltro è indefinito.
Ora considerando solo numeri interi positivi, è chiaro che a = b funziona.
Per altre soluzioni, prendiamo il logaritmo naturale di entrambi i lati (nessun problema, poiché entrambi i lati sono positivi) e otteniamo
b ln (a) == a ln (b)
Dividi entrambi i lati per a e ln (a) (nessun problema, stiamo considerando solo interi positivi al momento), otteniamo
(b / a) == ln (b) / ln ( a) == ln (a * (b / a)) / ln (a) == [ln (a) + ln (b / a)] / ln (a) == 1 + ln (b / a) / ln (a)
Riorganizza in
(b / a) -1 == ln (b / a) / ln (a)
Moltiplica entrambi i lati per ln (a) e dividi entrambi i lati per (b / a) -1 per ottenere
ln (a) == ln (b / a) [(b / a) -1]
Nota che questa è una divisione per zero se a = b, ma abbiamo già considerato quel caso. Quindi questo è valido solo per a> 0, b> 0 e a b. Ora dai un nome a b / aa, chiamalo x = b / a.
Quindi abbiamo
ln (a) == ln (x) / (x-1)
Notare che il lato sinistro è sempre positivo, a meno che a == 1, nel qual caso abbiamo bisogno di x == 1 (il lato destro può essere definito dalla continuità per coprire x = 1, ed è uguale a 1 a questo punto). Ma se x == 1, allora a = b, quindi la derivazione di questa equazione non era valida e abbiamo già considerato a = b comunque.
Quindi il lato sinistro è positivo per a> 1, ma va bene, perché il lato destro è sempre positivo per positivo x.Ma possiamo pensare separatamente ai casi di ln (a) 1. (ln (a) = 1 non si verifica per i valori interi di a.)
Per ln (a) , abbiamo
ln (x) / (x-1 ) .
Se x> 1, numeratore e denominatore sono positivi, quindi
ln (x) -1, che è sempre il caso. Ma se x , allora numeratore e denominatore sono negativi, quindi
ln (x)> x-1
Questo non è mai il caso della funzione logaritmo. Quindi se ln (a) 1. (Non è necessario considerare x = 1, poiché abbiamo già trattato a = b.)
E se ln (a)> 1? Allora
ln (x) / (x-1)> 1
Se x> 1, allora numeratore e denominatore sono positivi, quindi
ln ( x)> x-1
Non è mai così. Se x , allora numeratore e denominatore sono negativi, in modo che
ln (x) -1
Questo è sempre il caso. Quindi se ln (a)> 1, abbiamo bisogno di x .
Quindi per interi positivi con a b, abbiamo due casi da considerare. Uno è
ln (a) 1
e laltro è
ln (a)> 1 e x
Quindi pensiamo a questo. Cè un solo a> 1 (abbiamo già considerato a = 1) tale che ln (a) , e cioè a = 2. Quindi la x corrispondente è data da
ln (2) == ln (x) / (x-1)
Unipotesi plausibile (e una delle altre risposte ha già questo soluzione) è x = 2. Ma x = b / a e a = 2, quindi se x = 2, allora a = 4. Nota che non può esserci una soluzione per nessun altro valore di x, poiché ln (x) / (x-1) è una funzione strettamente decrescente per x> 0.
Laltro caso è ln (a) > 1, ma in questo caso abbiamo x . Ciò significa b / a o b
Quindi, se cè una soluzione intera positiva, i due valori aeb sono uguali o uno di loro è 2 e laltro è 4.
Non ci sono soluzioni che coinvolgono a = 0 ob = 0, a meno che non si voglia chiamare a = b = 0 una soluzione, sulla base del fatto che undefined è uguale a undefined, ma Non voglio che mi venga tolta la licenza di matematica.
Potremmo avere soluzioni negative. Supponiamo bene a 0 (sappiamo che non possiamo avere b = 0), allora a ^ b è un intero, ma b ^ a è un intero solo se a = -1. Ma allora a ^ b è -1 se b è dispari e +1 se b è pari. b ^ a è positivo, quindi non possiamo avere a = -1 e dispari b. Ma se b è pari, allora a ^ b è 1 e b ^ a non è uguale a uno. Quindi non possiamo avere a 0. Per lo stesso motivo, non possiamo avere a> 0 eb .
Possiamo avere a eb ? In tal caso, a ^ b è positivo se b è pari e negativo se b è dispari. Allo stesso modo, b ^ a è positivo se a è pari e negativo se a è dispari. Quindi, affinché i due siano uguali, è necessario che aeb siano dispari o che entrambi aeb siano pari.
Supponiamo che siano dispari. Quindi iniziando con
a ^ b == b ^ a
Moltiplichiamo entrambi i lati per uno negativo e riorganizziamo un po , ottenendo
(-a) ^ b == (-b) ^ a
Prendendo il reciproco di entrambi i lati, abbiamo
(-a) ^ (- b) == (-b) ^ (- a)
Ma se a eb 0 e -b> 0, e abbiamo già determinato che le uniche soluzioni positive per -a e -b con entrambe dispari sono quando -a = -b o a = b. Quindi, se aeb sono ciascuno lo stesso numero dispari negativo, vale luguaglianza. Se uno dei due è un numero intero dispari negativo, ma a b, allora non è una soluzione.
E se aeb sono numeri interi pari negativi? Quindi otteniamo
(-a) ^ b == (-b) ^ a
senza moltiplicare entrambi i lati per -1. Prendendo il reciproco di entrambi i lati, abbiamo
(-a) ^ (- b) == (-b) ^ (- a)
Conosciamo già le soluzioni dove -a > 0 e -b> 0 ed entrambi sono numeri interi positivi; o -a = -b, o -a = 2 e -b = 4, o -a = 4 e -b = 2.
Questo copre tutti i casi. Quindi lelenco completo delle soluzioni intere è
a e b sono lo stesso numero intero positivo o negativo (ma non zero)
a = 2 eb = 4
a = 4 e b = 2
a = -2 eb = -4
a = -4 eb = -2