Co to jest liczba całkowita ze znakiem?

Najlepsza odpowiedź

Ponieważ jest to zadawane w temacie Inżynierii oprogramowania, być może możemy omówić reprezentację.

Osiem bity danych (gdzie bit jest przełącznikiem reprezentującym 1 lub 0) mogą zawierać liczbę całkowitą bez znaku w następujący sposób:

0 = 00000000

1 = 00000001

2 = 00000010

4 = 00000100

8 = 00001000

16 = 00010000

256 = 10000000

511 = 11111111

Zatem nasze 8 bitów danych może pomieścić liczbę całkowitą bez znaku o rozmiarze do 255 i tak małe jak 0. Jednak rzeczywiste aplikacje mogą wymagać zarówno liczb ujemnych, jak i dodatnich.

Aby uwzględnić liczby całkowite ze znakiem, musimy zrezygnować z części naszej pamięci. Jest kilka schematów, które to robią.

Najprostszym schematem byłoby użycie pierwszego bitu do reprezentacji znaku (powiedzmy, że zero jest dodatnie, a 1 jest ujemne). Ma to zabawne konsekwencje w postaci dodatniej i ujemnej wartości zerowej.

+ 0 = 00000000

- 0 = 10000000

1 = 00000001

- 1 = 10000001

+ 2 = 00000010

- 2 = 10000010

+ 64 = 01000000

- 64 = 11000000

+127 = 01111111

To pozwala nam przechowywać numery z -127 do +127, czyli 255 liczb (w tym 0).

Innym sposobem na zrobienie tego jest użycie tak zwanego one-complement przechowywanie. W tym przypadku liczba ujemna jest odwrotną sekwencją bitów do liczby dodatniej.

Na przykład:

0 = 00000000

0 = 11111111

2 = 00000010

- 2 = 11111101

Arytmetyka na liczbach ujemnych pozwala nam dodać te dwie liczby. Na przykład 2 + -2 staje się

+ 2 = 00000010

-2 = 11111101

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

= 11111111

, który, jak widzieliśmy wcześniej, wynosił zero. Zatem zakres, który możemy zapisać w tej reprezentacji za pomocą 8 bitów, to liczby całkowite od -127 do +127 lub 255 liczb (ponieważ uwzględniamy zero jako pojedynczą liczbę).

Ponieważ minus zero to zero , nadal istnieją dwie reprezentacje zera. To trochę marnotrawstwo, więc aby obejść ten problem, stosuje się uzupełnienie dwójek . To bierze liczbę ujemną do jedynek i dodaje jedynkę. W tej reprezentacji

0 = 00000000

2 = 00000010

- 2 = 11111110

- 1 = 11111111

1 = 00000001

-128 = 10000000

127 = 01111111

-127 = 10000001

Zatem zakres, który możemy zapisać w tej reprezentacji za pomocą 8 bitów, to liczby całkowite od -128 do +127, czyli łącznie 256 liczb. Korzystanie z tego schematu pozwala nam efektywniej wykorzystywać wszystkie kombinacje, co może być bardzo ważne, jeśli chcemy jak najlepiej wykorzystać zasoby reprezentujące tak podstawowe rzeczy, jak liczby całkowite ze znakiem.

Istnieją inne utworzone ze znaków ze znakiem reprezentacje liczb całkowitych, które można zobaczyć pod adresem Podpisane reprezentacje liczb – Wikipedia .

Odpowiedź

Po pierwsze, brak rozwiązania liczba równa zero.

Jeśli oba są równe zero, to obie strony są niezdefiniowane. (Możesz to nazwać rozwiązaniem, jeśli chcesz – nie zrobię tego).

Jeśli jedna jest równa zero, a druga dodatnia, to jedna strona jest równa zero, a druga to jedna.

Jeśli jedna jest równa zero, a druga jest ujemna, to jedna strona jest jedną, a druga jest niezdefiniowana.

Biorąc pod uwagę tylko dodatnie liczby całkowite, jasne jest, że a = b działa.

Dla innych rozwiązań weźmy logarytm naturalny obu stron (nie ma problemu, ponieważ obie strony są dodatnie) i otrzymujemy

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

Podzielić obie strony przez a i ln (a) (nie ma problemu, w tej chwili rozważamy tylko dodatnie liczby całkowite), otrzymujemy

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

Zmień układ na

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

Pomnóż obie strony przez ln (a) i podziel obie strony przez (b / a) -1, aby uzyskać

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

Zauważ, że jest to dzielenie przez zero, jeśli a = b, ale już rozważaliśmy ten przypadek. Więc to jest ważne tylko dla a> 0, b> 0 i a b. Teraz podaj nazwę b / aa, nazwij ją x = b / a.

Mamy więc

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

Zauważ, że lewa strona jest zawsze dodatnia, chyba że a == 1, w którym to przypadku potrzebujemy x == 1 (prawą stronę można zdefiniować ciągłością obejmującą x = 1, i jest równa 1 w tym momencie). Ale jeśli x == 1, to a = b, więc wyprowadzenie tego równania było nieprawidłowe, a i tak już rozważaliśmy a = b.

Więc lewa strona jest dodatnia dla a> 1, ale to jest w porządku, ponieważ prawa strona jest zawsze dodatnia dla dodatniego x.Ale możemy pomyśleć o przypadkach ln (a) 1, oddzielnie. (ln (a) = 1 nie występuje dla wartości całkowitych a.)

Dla ln (a) mamy

ln (x) / (x-1 ) .

Jeśli x> 1, to licznik i mianownik są dodatnie, więc

ln (x) -1, co zawsze ma miejsce. Ale jeśli x , to licznik i mianownik są ujemne, więc

ln (x)> x-1

W przypadku funkcji logarytm nigdy tak nie jest. Więc jeśli ln (a) 1. (Nie ma potrzeby rozważać x = 1, ponieważ omówiliśmy już a = b.)

A co jeśli ln (a)> 1? Następnie

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

Jeśli x> 1, to licznik i mianownik są dodatnie, więc

ln ( x)> x-1

Nigdy tak nie jest. Jeśli x , to licznik i mianownik są ujemne, więc

ln (x) -1

Tak jest zawsze. Więc jeśli ln (a)> 1, potrzebujemy x .

Zatem dla dodatnich liczb całkowitych z a b mamy do rozważenia dwa przypadki. Jedna to

ln (a) 1

a druga to

ln (a)> 1 i x

Pomyślmy więc o tym. Jest tylko jeden a> 1 (rozważaliśmy już a = 1) taki, że ln (a) , czyli a = 2. Następnie odpowiadające x jest podane przez

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

Wykształcone przypuszczenie (i jedna z pozostałych odpowiedzi już to rozwiązanie) to x = 2. Ale x = b / a i a = 2, więc jeśli x = 2, to a = 4. Zauważ, że nie może być rozwiązania dla żadnej innej wartości x, ponieważ ln (x) / (x-1) jest funkcją ściśle malejącą dla x> 0.

Drugi przypadek to ln (a) > 1, ale w tym przypadku mamy x . To oznacza b / a lub b 1 (prawda dla dowolnej liczby całkowitej a> 2), to a jest większą liczbą całkowitą, a b jest mniejszą. Ale czy ln (b)> 1? Jeśli tak, to po prostu zamień a i b, to również musi być rozwiązanie ze względu na symetrię. Wtedy ln (a)> 1, co oznacza x 1 i ln (b)> 1. ln (b) = 1 nie odpowiada liczbie całkowitej, więc jeśli ln (a)> 1, to musimy mieć ln (b) 1 z ln (b) jest 2.

Więc jeśli istnieje dodatnia liczba całkowita, albo dwie wartości aib są takie same lub jedna z nich to 2 a drugi to 4.

Nie ma rozwiązań obejmujących a = 0 lub b = 0, chyba że chcesz nazwać a = b = 0 rozwiązaniem, na tej podstawie, że undefined jest równe undefined, ale Nie chcę odebrać mi prawa do matematyki.

Czy moglibyśmy znaleźć negatywne rozwiązania. Załóżmy, że a 0 (wiemy, że nie możemy mieć b = 0), wtedy a ^ b jest liczbą całkowitą, ale b ^ a jest liczbą całkowitą tylko wtedy, gdy a = -1. Ale wtedy a ^ b wynosi -1, jeśli b jest nieparzyste, a +1, jeśli b jest parzyste. b ^ a jest dodatnie, więc nie możemy mieć a = -1 i nieparzystego b. Ale jeśli b jest parzyste, to a ^ b wynosi 1, a b ^ a nie jest równe jeden. Więc nie możemy mieć 0. Z tego samego powodu nie możemy mieć a> 0 i b .

Czy możemy mieć a ib ? W takim przypadku a ^ b jest dodatnie, jeśli b jest parzyste, i ujemne, jeśli b jest nieparzyste. Podobnie b ^ a jest dodatnie, jeśli a jest parzyste, i ujemne, jeśli a jest nieparzyste. Aby te dwa były równe, potrzebujemy, aby a i b były nieparzyste, albo oba a i b są parzyste.

Załóżmy, że są nieparzyste. Następnie zaczynając od

a ^ b == b ^ a

Mnożymy obie strony przez minus jeden i trochę przestawiamy, uzyskując

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

Biorąc odwrotność obu stron, mamy

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

Ale jeśli a i b 0 i -b> 0, a już ustaliliśmy, że jedynymi dodatnimi rozwiązaniami dla -a i -b z nieparzystymi są kiedy -a = -b lub a = b. Więc jeśli a i b są tymi samymi ujemnymi nieparzystymi liczbami całkowitymi, równość jest zachowana. Jeśli jedna z nich jest ujemną nieparzystą liczbą całkowitą, ale a b, to nie jest rozwiązaniem.

A co, jeśli aib są ujemnymi liczbami całkowitymi parzystymi? Wtedy otrzymujemy

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

bez mnożenia obu stron przez -1. Biorąc pod uwagę odwrotność obu stron, mamy

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

Znamy już rozwiązania, w których -a > 0 i -b> 0 i obie są parzystymi dodatnimi liczbami całkowitymi; albo -a = -b, lub -a = 2 i -b = 4, lub -a = 4 i -b = 2.

Obejmuje to wszystkie przypadki. Tak więc pełna lista rozwiązań całkowitoliczbowych to

a i b są taką samą dodatnią lub ujemną liczbą całkowitą (ale nie zerem)

a = 2 ib = 4

a = 4 i b = 2

a = -2 i b = -4

a = -4 i b = -2

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *