Hva er et signert heltall?

Beste svaret

Siden dette blir spurt under temaet Software Engineering, kan vi kanskje diskutere representasjon.

Åtte biter av data (hvor en bit er en bryter som representerer en 1 eller en 0) kan inneholde et usignert heltall som følger:

0 = 00000000

1 = 00000001

2 = 00000010

4 = 00000100

8 = 00001000

16 = 00010000

256 = 10000000

511 = 11111111

Så våre 8 biter med data kan inneholde et usignert heltall så stort som 255 og så små som 0. Imidlertid kan virkelige applikasjoner kreve så vel negative som positive tall.

For å imøtekomme signerte heltall, må vi gi opp noe av lagringsplassen vår. Det er flere skjemaer som gjør dette.

Den enkleste ordningen vil være å bruke den første biten til å representere tegnet (si at null er positiv og 1 er negativ). Dette har den morsomme konsekvensen av å ha en positiv og en negativ nullverdi.

+ 0 = 00000000

- 0 = 10000000

1 = 00000001

- 1 = 10000001

+ 2 = 00000010

- 2 = 10000010

+ 64 = 01000000

- 64 = 11000000

+127 = 01111111

Dette lar oss lagre tall fra -127 til +127 som er 255 tall (inkludert 0).

En annen måte å gjøre dette på er å bruke det som kalles ens-komplement lagring. For dette er det negative tallet motsatt bitsekvens til det positive tallet.

For eksempel:

0 = 00000000

0 = 11111111

2 = 00000010

- 2 = 11111101

Aritmetikk med negative tall lar oss legge til de to tallene. For eksempel blir 2 + -2

+ 2 = 00000010

-2 = 11111101

--------------

= 11111111

som vi så tidligere var null. Så området vi kan lagre i denne representasjonen med 8 biter er heltallene mellom -127 og +127, eller 255 tall (siden vi inkluderer null som et enkelt tall).

Siden negativet på null er null , det er fortsatt to representasjoner av null. Det er litt bortkastet, så for å komme deg rundt dette brukes to-komplement . Det tar det ene-komplement-negative tallet og legger til ett. I denne representasjonen

0 = 00000000

2 = 00000010

- 2 = 11111110

- 1 = 11111111

1 = 00000001

-128 = 10000000

127 = 01111111

-127 = 10000001

Så området vi kan lagre i denne representasjonen med 8 bits er heltallene mellom -128 og +127, eller 256 tall totalt. Ved å bruke denne ordningen kan vi bruke mer effektivt alle kombinasjonene, noe som kan være veldig viktig hvis vi ønsker å utnytte ressursene som representerer så grunnleggende ting som signerte heltall, best mulig.

Det er andre former for signerte heltallrepresentasjoner som kan sees på Signerte nummerrepresentasjoner – Wikipedia .

Svar

Først, ingen løsning med verken tallet er lik null.

Hvis begge er null, er de to sidene udefinerte. (Du kan kalle det en løsning hvis du vil – jeg vil ikke.)

Hvis den ene er null og den andre er positiv, er den ene siden null og den andre er den ene.

Hvis den ene er null og den andre er negativ, er den ene siden den ene og den andre udefinerte.

Nå vurderer vi bare positive heltall, er det klart at a = b fungerer.

For andre løsninger, ta naturlig logg fra begge sider (ikke noe problem, siden begge sider er positive), og vi får

b ln (a) == a ln (b)

Del begge sider av a og ln (a) (ikke noe problem, vi vurderer bare positive heltall for øyeblikket), vi får

(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)

Omorganiser til

(b / a) -1 == ln (b / a) / ln (a)

Multipliser begge sider ved ln (a) og del begge sider med (b / a) -1 for å få

ln (a) == ln (b / a) [(b / a) -1]

Merk at dette er divisjon med null hvis a = b, men vi har allerede vurdert den saken. Så dette er bare gyldig for a> 0, b> 0 og a b. Gi nå b / aa navn, kall det x = b / a.

Så vi har

ln (a) == ln (x) / (x-1)

Merk at venstre side alltid er positiv, med mindre a == 1, i så fall trenger vi x == 1 (høyre side kan defineres ved kontinuitet for å dekke x = 1, og er lik 1 på dette punktet). Men hvis x == 1, så er a = b, så avledningen av denne ligningen var ugyldig, og vi vurderte allerede a = b uansett.

Så venstre side er positiv for a> 1, men det er OK, fordi høyre side alltid er positiv for positiv x.Men vi kan tenke på tilfellene av ln (a) 1, hver for seg. (ln (a) = 1 forekommer ikke for heltallverdier av a.)

For ln (a) har vi

ln (x) / (x-1 ) .

Hvis x> 1, er teller og nevner positive, slik at

ln (x) -1, noe som alltid er tilfelle. Men hvis x , så er teller og nevner negativ, slik at

ln (x)> x-1

Dette er aldri tilfelle for logaritmefunksjonen. Så hvis ln (a) 1. (Det er ikke nødvendig å vurdere x = 1, ettersom vi allerede har dekket a = b.)

Hva om ln (a)> 1? Deretter

ln (x) / (x-1)> 1

Hvis x> 1, så er teller og nevner positive, slik at

ln ( x)> x-1

Dette er aldri tilfelle. Hvis x , er teller og nevner negative, slik at

ln (x) -1

Dette er alltid tilfelle. Så hvis ln (a)> 1, trenger vi x .

Så for positive heltall med b, har vi to tilfeller å vurdere. Den ene er

ln (a) 1

og den andre er

ln (a)> 1 og x

Så la oss tenke på dette. Det er bare en a> 1 (vi har allerede vurdert a = 1) slik at ln (a) , og det er a = 2. Deretter blir tilsvarende x gitt av

ln (2) == ln (x) / (x-1)

En utdannet gjetning (og et av de andre svarene har allerede dette løsning) er x = 2. Men x = b / a, og a = 2, så hvis x = 2, så a = 4. Merk at det ikke kan være en løsning for noen annen verdi på x, siden ln (x) / (x-1) er en strengt avtagende funksjon for x> 0.

Det andre tilfellet er ln (a) > 1, men i dette tilfellet har vi x . Det betyr b / a , eller b 1 (sant for ethvert heltall a> 2), så er a det større heltallet, og b er det mindre. Men kan ln (b)> 1? I så fall er det bare å bytte a og b, dette må også være en løsning på grunn av symmetrien. Deretter er ln (a)> 1, som betyr x 1 og ln (b)> 1. ln (b) = 1 tilsvarer ikke et heltall, så hvis ln (a)> 1, må vi ha ln (b) 1 med ln (b) er 2.

Så hvis det er en positiv heltalsløsning, er de to verdiene a og b de samme, eller en av dem er 2 og den andre er 4.

Det er ingen løsninger som involverer a = 0 eller b = 0, med mindre du vil kalle a = b = 0 en løsning, med den begrunnelsen at udefinert er lik udefinert, men Jeg vil ikke ta bort mattelisensen.

Kan vi ha negative løsninger. Anta at a 0 (vi vet at vi ikke kan ha b = 0), så er a ^ b et heltall, men b ^ a er bare et heltall hvis a = -1. Men så er a ^ b -1 hvis b er merkelig, og +1 hvis b er jevn. b ^ a er positiv, så vi kan ikke ha a = -1 og odd b. Men hvis b er jevn, så er a ^ b 1, og b ^ a er ikke lik en. Så vi kan ikke ha en 0. Av samme grunn kan vi ikke ha a> 0 og b .

Kan vi ha a og b ? I så fall er a ^ b positiv hvis b er jevn, og negativ hvis b er merkelig. Tilsvarende er b ^ a positiv hvis a er jevn, og negativ hvis a er merkelig. Så for at de to skal være like, trenger vi både a og b for å være rare, eller begge a og b for å være jevne.

Anta at de er rare. Fra og med

a ^ b == b ^ a

Vi multipliserer begge sider med negativ, og omorganiserer litt, får

(-a) ^ b == (-b) ^ a

Tar vi gjensidige fra begge sider, har vi

(-a) ^ (- b) == (-b) ^ (- a)

Men hvis a og b 0 og -b> 0, og vi har allerede bestemt at de eneste positive løsningene for -a og -b med begge oddene er når -a = -b, eller a = b. Så hvis a og b er det samme negative oddetallet, gjelder likheten. Hvis en er et negativt oddetall, men a b, så er det ikke en løsning.

Hva om a og b er negative til og med heltall? Så får vi

(-a) ^ b == (-b) ^ a

uten å multiplisere begge sider med -1. Tar vi gjensidige fra begge sider, har vi

(-a) ^ (- b) == (-b) ^ (- a)

Vi vet allerede løsningene der -a > 0 og -b> 0 og begge er til og med positive heltall; enten -a = -b, eller -a = 2 og -b = 4, eller -a = 4 og -b = 2.

Dette dekker alle tilfellene. Så den komplette listen over heltalløsninger er

a og b er det samme positive eller negative heltallet (men ikke null)

a = 2 og b = 4

a = 4 og b = 2

a = -2 og b = -4

a = -4 og b = -2

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *