Meilleure réponse
Puisque cette question est posée sous le thème du génie logiciel, nous pouvons peut-être discuter de la représentation.
Huit les bits de données (où un bit est un commutateur représentant un 1 ou un 0) peuvent contenir un entier non signé comme suit:
0 = 00000000
1 = 00000001
2 = 00000010
4 = 00000100
8 = 00001000
16 = 00010000
256 = 10000000
511 = 11111111
Ainsi, nos 8 bits de données peuvent contenir un entier non signé aussi grand que 255 et aussi petit que 0. Cependant, les applications du monde réel peuvent nécessiter des nombres négatifs aussi bien que des nombres positifs.
Afin daccueillir les entiers signés, nous devons abandonner une partie de notre stockage. Il existe plusieurs schémas qui font cela.
Le schéma le plus simple serait dutiliser le premier bit pour représenter le signe (disons que zéro est positif et 1 est négatif). Cela a pour conséquence amusante davoir une valeur zéro positive et négative.
+ 0 = 00000000
- 0 = 10000000
1 = 00000001
- 1 = 10000001
+ 2 = 00000010
- 2 = 10000010
+ 64 = 01000000
- 64 = 11000000
+127 = 01111111
Cela nous permet de stocker les numéros de -127 à +127, soit 255 nombres (y compris 0).
Une autre façon de faire est dutiliser ce que lon appelle ones-complément stockage. Pour cela, le nombre négatif est la séquence de bits opposée au nombre positif.
Par exemple:
0 = 00000000
0 = 11111111
2 = 00000010
- 2 = 11111101
Larithmétique avec des nombres négatifs nous permet dajouter les deux nombres. Par exemple 2 + -2 devient
+ 2 = 00000010
-2 = 11111101
--------------
= 11111111
que nous avons vu précédemment était zéro. Ainsi, la plage que nous pouvons stocker dans cette représentation à 8 bits sont les entiers entre -127 et +127, ou 255 nombres (puisque nous incluons zéro comme un seul nombre).
Puisque le négatif de zéro est zéro , il y a encore deux représentations de zéro. Cest un peu de gaspillage. Pour contourner ce problème, twos-complément est utilisé. Cela prend le nombre négatif du complément à un et en ajoute un. Dans cette représentation
0 = 00000000
2 = 00000010
- 2 = 11111110
- 1 = 11111111
1 = 00000001
-128 = 10000000
127 = 01111111
-127 = 10000001
Ainsi, la plage que nous pouvons stocker dans cette représentation à 8 bits sont les entiers entre -128 et +127, soit 256 nombres au total. Lutilisation de ce schéma nous permet dutiliser plus efficacement toutes les combinaisons, ce qui peut être très important si nous voulons utiliser au mieux les ressources représentant des choses aussi fondamentales que les entiers signés.
Il existe dautres formes de signés. représentations dentiers visibles à Représentations de nombres signés – Wikipédia .
Réponse
Premièrement, aucune solution avec lun ou lautre nombre égal à zéro.
Sils sont tous les deux à zéro, alors les deux côtés ne sont pas définis. (Vous pouvez appeler cela une solution si vous le souhaitez – je ne le ferai pas.)
Si lun est zéro et lautre positif, alors un côté est zéro et lautre est un.
Si lun est égal à zéro et lautre négatif, alors un côté est lun et lautre nest pas défini.
Maintenant, en considérant uniquement les entiers positifs, il est clair que a = b fonctionne.
Pour dautres solutions, prenons le log naturel des deux côtés (pas de problème, puisque les deux côtés sont positifs), et nous obtenons
b ln (a) == a ln (b)
Divisez les deux côtés par a et ln (a) (pas de problème, nous ne considérons que des entiers positifs pour le moment), nous obtenons
(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)
Réorganiser en
(b / a) -1 == ln (b / a) / ln (a)
Multiplier les deux côtés par ln (a) et divisez les deux côtés par (b / a) -1 pour obtenir
ln (a) == ln (b / a) [(b / a) -1]
Notez quil sagit dune division par zéro si a = b, mais nous avons déjà considéré ce cas. Ceci nest donc valable que pour a> 0, b> 0 et a b. Maintenant, donnez un nom à b / aa, appelez-le x = b / a.
Nous avons donc
ln (a) == ln (x) / (x-1)
Notez que le côté gauche est toujours positif, sauf a == 1, auquel cas nous avons besoin de x == 1 (le côté droit peut être défini par continuité pour couvrir x = 1, et est égal à 1 à ce stade). Mais si x == 1, alors a = b, donc la dérivation de cette équation était invalide, et nous avons déjà considéré a = b de toute façon.
Donc, le côté gauche est positif pour a> 1, mais ce nest pas grave, car le côté droit est toujours positif pour x positif.Mais on peut penser aux cas de ln (a) 1, séparément. (ln (a) = 1 ne se produit pas pour les valeurs entières de a.)
Pour ln (a) , nous avons
ln (x) / (x-1 ) .
Si x> 1, alors le numérateur et le dénominateur sont positifs, de sorte que
ln (x) -1, ce qui est toujours le cas. Mais si x , alors numérateur et dénominateur sont négatifs, de sorte que
ln (x)> x-1
Ce nest jamais le cas pour la fonction logarithme. Donc si ln (a) 1. (Il nest pas nécessaire de considérer x = 1, car nous avons déjà couvert a = b.)
Et si ln (a)> 1? Alors
ln (x) / (x-1)> 1
Si x> 1, alors le numérateur et le dénominateur sont positifs, de sorte que
ln ( x)> x-1
Ce nest jamais le cas. Si x , alors le numérateur et le dénominateur sont négatifs, de sorte que
ln (x) -1
Cest toujours le cas. Donc si ln (a)> 1, nous avons besoin de x .
Donc, pour les entiers positifs avec a b, nous avons deux cas à considérer. Lun est
ln (a) 1
et lautre est
ln (a)> 1 et x
Pensons donc à ceci. Il ny a quun seul a> 1 (nous avons déjà considéré a = 1) tel que ln (a) , et cest a = 2. Ensuite, le x correspondant est donné par
ln (2) == ln (x) / (x-1)
Une supposition éclairée (et lune des autres réponses a déjà ceci solution) est x = 2. Mais x = b / a, et a = 2, donc si x = 2, alors a = 4. Notez quil ne peut y avoir de solution pour aucune autre valeur de x, puisque ln (x) / (x-1) est une fonction strictement décroissante pour x> 0.
Lautre cas est ln (a) > 1, mais dans ce cas, nous avons x . Cela signifie b / a , ou b
Donc, sil y a une solution entière positive, soit les deux valeurs a et b sont identiques, soit lune delles est 2 et lautre est 4.
Il ny a pas de solutions impliquant a = 0 ou b = 0, sauf si vous voulez appeler a = b = 0 une solution, au motif que undefined est égal à undefined, mais Je ne veux pas que ma licence de maths me soit enlevée.
Pourrions-nous avoir des solutions négatives. Supposons que a 0 (nous savons que nous ne pouvons pas avoir b = 0), alors a ^ b est un entier, mais b ^ a nest quun entier si a = -1. Mais alors a ^ b vaut -1 si b est impair, et +1 si b est pair. b ^ a est positif, nous ne pouvons donc pas avoir a = -1 et impair b. Mais si b est pair, alors a ^ b vaut 1 et b ^ a nest pas égal à un. On ne peut donc pas avoir a 0. Pour la même raison, on ne peut pas avoir a> 0 et b .
Pouvons-nous avoir a et b ? Dans ce cas, a ^ b est positif si b est pair et négatif si b est impair. De même, b ^ a est positif si a est pair et négatif si a est impair. Donc, pour que les deux soient égaux, nous avons besoin que a et b soient impairs, ou que a et b soient tous les deux pairs.
Supposons quils soient impairs. Puis en commençant par
a ^ b == b ^ a
Nous multiplions les deux côtés par un négatif, et nous réorganisons un peu, obtenant
(-a) ^ b == (-b) ^ a
En prenant les réciproques des deux côtés, nous avons
(-a) ^ (- b) == (-b) ^ (- a)
Mais si a et b 0 et -b> 0, et nous avons déjà déterminé que les seules solutions positives pour -a et -b avec les deux impairs sont quand -a = -b, ou a = b. Donc, si a et b sont chacun le même entier impair négatif, légalité est vraie. Si lun ou lautre est un entier impair négatif, mais a b, alors ce nest pas une solution.
Et si a et b sont des entiers pairs négatifs? On obtient alors
(-a) ^ b == (-b) ^ a
sans multiplier les deux côtés par -1. En prenant les réciproques des deux côtés, nous avons
(-a) ^ (- b) == (-b) ^ (- a)
Nous connaissons déjà les solutions où -a > 0 et -b> 0 et les deux sont même des entiers positifs; soit -a = -b, soit -a = 2 et -b = 4, soit -a = 4 et -b = 2.
Ceci couvre tous les cas. Donc, la liste complète des solutions entières est
a et b sont le même entier positif ou négatif (mais pas zéro)
a = 2 et b = 4
a = 4 et b = 2
a = -2 et b = -4
a = -4 et b = -2