Cel mai bun răspuns
Deoarece acest lucru este întrebat sub tema Inginerie software, poate putem discuta despre reprezentare.
Opt biți de date (unde un bit este un comutator care reprezintă un 1 sau un 0) poate conține un număr întreg nesemnat după cum urmează:
0 = 00000000
1 = 00000001
2 = 00000010
4 = 00000100
8 = 00001000
16 = 00010000
256 = 10000000
511 = 11111111
Deci, cei 8 biți ai noștri de date pot conține un întreg nesemnat de 255 și la fel de mic ca 0. Cu toate acestea, aplicațiile din lumea reală pot necesita atât numere negative, cât și numere pozitive.
Pentru a găzdui numere întregi semnate, trebuie să renunțăm la o parte din spațiul nostru de stocare. Există mai multe scheme care fac acest lucru.
Cea mai simplă schemă ar fi utilizarea primului bit pentru a reprezenta semnul (să spunem că zero este pozitiv și 1 este negativ). Aceasta are consecința amuzantă de a avea o valoare zero pozitivă și una negativă.
+ 0 = 00000000
- 0 = 10000000
1 = 00000001
- 1 = 10000001
+ 2 = 00000010
- 2 = 10000010
+ 64 = 01000000
- 64 = 11000000
+127 = 01111111
Acest lucru ne permite să stocăm numerele din -127 până la +127, care reprezintă 255 de numere (inclusiv 0).
Un alt mod de a face acest lucru este prin utilizarea a ceea ce se numește ones-complement depozitare. Pentru aceasta, numărul negativ este secvența de biți opusă numărului pozitiv.
De exemplu:
0 = 00000000
0 = 11111111
2 = 00000010
- 2 = 11111101
Aritmetica cu numere negative ne permite să adăugăm cele două numere. De exemplu, 2 + -2 devine
+ 2 = 00000010
-2 = 11111101
--------------
= 11111111
pe care l-am văzut anterior era zero. Deci intervalul pe care îl putem stoca în această reprezentare cu 8 biți sunt numerele între -127 și +127 sau 255 numere (deoarece includem zero ca număr unic).
Deoarece negativul zero este zero , există încă două reprezentări ale zero. Este puțin risipitor, așa că, pentru a rezolva acest lucru, se folosește două-complement . Asta ia numărul negativ al complementului celor și adaugă unul. În această reprezentare
0 = 00000000
2 = 00000010
- 2 = 11111110
- 1 = 11111111
1 = 00000001
-128 = 10000000
127 = 01111111
-127 = 10000001
Deci intervalul pe care îl putem stoca în această reprezentare cu 8 biți sunt numerele între -128 și +127 sau 256 de numere în total. Utilizarea acestei scheme ne permite să folosim mai eficient toate combinațiile, ceea ce poate fi foarte important dacă vrem să folosim cât mai bine resursele care reprezintă lucruri fundamentale precum numerele întregi semnate.
Există alte formate din semnate reprezentări întregi care pot fi văzute la Reprezentări cu număr semnat – Wikipedia .
Răspuns
În primul rând, nu există nicio soluție număr egal cu zero.
Dacă ambele sunt zero, atunci cele două părți sunt nedefinite. (Puteți numi această soluție dacă doriți – nu o voi face.)
Dacă una este zero și cealaltă este pozitivă, atunci o parte este zero și cealaltă este una.
Dacă una este zero și cealaltă este negativă, atunci o parte este una și cealaltă este nedefinită.
Acum, luând în considerare numai numere întregi pozitive, este clar că a = b funcționează.
Pentru alte soluții, luați jurnalul natural al ambelor părți (nicio problemă, deoarece ambele părți sunt pozitive) și obținem
b ln (a) == a ln (b)
Împărțiți ambele părți la a și ln (a) (nicio problemă, luăm în considerare numere întregi pozitive doar în acest moment), obținem
(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)
Rearanjați la
(b / a) -1 == ln (b / a) / ln (a)
Înmulțiți ambele părți de ln (a) și împărțiți ambele părți la (b / a) -1 pentru a obține
ln (a) == ln (b / a) [(b / a) -1]
Rețineți că aceasta este împărțirea la zero dacă a = b, dar am considerat deja acest caz. Deci, acest lucru este valabil numai pentru a> 0, b> 0 și a b. Acum dați numele b / aa, numiți-l x = b / a.
Deci avem
ln (a) == ln (x) / (x-1)
Rețineți că partea stângă este întotdeauna pozitivă, cu excepția cazului în care = = 1, caz în care avem nevoie de x == 1 (partea dreaptă poate fi definită prin continuitate pentru a acoperi x = 1 și este egal cu 1 în acest moment). Dar dacă x == 1, atunci a = b, deci derivarea acestei ecuații a fost invalidă și am considerat deja a = b oricum.
Deci partea stângă este pozitivă pentru a> 1, dar este OK, deoarece partea dreaptă este întotdeauna pozitivă pentru x pozitiv.Dar ne putem gândi la cazurile de ln (a) 1, separat. (ln (a) = 1 nu apare pentru valorile întregi ale lui a.)
Pentru ln (a) , avem
ln (x) / (x-1 ) .
Dacă x> 1, atunci numeratorul și numitorul sunt pozitivi, astfel încât
ln (x) -1, ceea ce este întotdeauna cazul. Dar dacă x , atunci numeratorul și numitorul sunt negative, astfel încât
ln (x)> x-1
Acest lucru nu este niciodată cazul funcției logaritmice. Deci, dacă ln (a) 1. (Nu este nevoie să luăm în considerare x = 1, deoarece am acoperit deja a = b.)
Ce se întâmplă dacă ln (a)> 1? Apoi
ln (x) / (x-1)> 1
Dacă x> 1, atunci numeratorul și numitorul sunt pozitivi, astfel încât
ln ( x)> x-1
Acest lucru nu este niciodată cazul. Dacă x , atunci numărătorul și numitorul sunt negative, astfel încât
ln (x) -1
Acesta este întotdeauna cazul. Deci, dacă ln (a)> 1, avem nevoie de x .
Deci, pentru numerele întregi pozitive cu a b, avem două cazuri de luat în considerare. Una este
ln (a) 1
iar cealaltă este
ln (a)> 1 și x
Deci, să ne gândim la acest lucru. Există un singur a> 1 (am considerat deja a = 1) astfel încât ln (a) , și anume a = 2. Apoi x-ul corespunzător este dat de
ln (2) == ln (x) / (x-1)
O presupunere educată (și unul dintre celelalte răspunsuri are deja acest lucru soluție) este x = 2. Dar x = b / a și a = 2, deci dacă x = 2, atunci a = 4. Rețineți că nu poate exista o soluție pentru nicio altă valoare a lui x, deoarece ln (x) / (x-1) este o funcție strict descrescătoare pentru x> 0.
Celălalt caz este ln (a) > 1, dar în acest caz, avem x . Asta înseamnă b / a sau b
Deci, dacă există o soluție întreagă pozitivă, fie cele două valori a și b sunt aceleași, fie una dintre ele este 2 iar cealaltă este 4.
Nu există soluții care să implice a = 0 sau b = 0, cu excepția cazului în care doriți să numiți o soluție a = b = 0, pe motiv că nedefinit este egal cu nedefinit, dar Nu vreau să mi se ia permisul de matematică.
Am putea avea soluții negative. Să presupunem că a 0 (știm că nu putem avea b = 0), atunci a ^ b este un număr întreg, dar b ^ a este doar un număr întreg dacă a = -1. Dar atunci a ^ b este -1 dacă b este impar și +1 dacă b este par. b ^ a este pozitiv, deci nu putem avea a = -1 și b impar. Dar dacă b este egal, atunci a ^ b este 1 și b ^ a nu este egal cu unul. Deci nu putem avea un 0. Din același motiv, nu putem avea> 0 și b .
Putem avea și b ? În acest caz, a ^ b este pozitiv dacă b este par și negativ dacă b este impar. În mod similar, b ^ a este pozitiv dacă a este par și negativ dacă a este impar. Deci, pentru ca cei doi să fie egali, avem nevoie de atât a și b să fie impare, fie ambele a și b să fie pare.
Să presupunem că sunt impare. Apoi, începând cu
a ^ b == b ^ a
Înmulțim ambele părți cu una negativă și rearanjăm puțin, obținând
(-a) ^ b == (-b) ^ a
Luând reciproce ale ambelor părți, avem
(-a) ^ (- b) == (-b) ^ (- a)
Dar dacă a și b 0 și -b> 0 și am stabilit deja că singurele soluții pozitive pentru -a și -b cu ambele impare sunt când -a = -b sau a = b. Deci, dacă a și b sunt fiecare același număr negativ impar, egalitatea se menține. Dacă oricare dintre acestea este un număr impar negativ, dar a b, atunci nu este o soluție.
Ce se întâmplă dacă a și b sunt numere întregi negative? Apoi obținem
(-a) ^ b == (-b) ^ a
fără a înmulți ambele părți cu -1. Luând reciproce ale ambelor părți, avem
(-a) ^ (- b) == (-b) ^ (- a)
Știm deja soluțiile în care -a > 0 și -b> 0 și ambele sunt chiar numere întregi pozitive; fie -a = -b, fie -a = 2 și -b = 4, fie -a = 4 și -b = 2.
Aceasta acoperă toate cazurile. Deci lista completă a soluțiilor întregi este
a și b sunt același număr întreg pozitiv sau negativ (dar nu zero)
a = 2 și b = 4
a = 4 și b = 2
a = -2 și b = -4
a = -4 și b = -2