Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Dyskusja:Liczba całkowita (typ danych) - Wikipedia, wolna encyklopedia

Dyskusja:Liczba całkowita (typ danych)

Z Wikipedii

Przenoszę też na razie do dyskuji ten fragment hasła:

Do oznaczenia liczb ujemnych w tym zapisie można używać na przykład kodu "dopełnienia do dwóch". Oznacza to, że aby otrzymać liczbę ujemną o danej wartości bezwzględnej, należy zamienić wszystkie zera na jedynki i odwrotnie.

Przykład: wyznaczenie liczby -1 10 na ośmiu bitach wygląda tak:

  • 1 10 = 0000 0001 2
  • zamiana cyfr: 1111 1110 2
  • dodajemy 1 i -1 10 = 1111 1111 2

bo nie rozumiem, jak zamiana cyfr w zapisie może zmienić znak liczby. W tych przekształceniach chodzi chyba o coś innego... IMHO -1 w systemie dziesiątkowym, ósemkowym a nawet dwójkowym nadal zapisuje się jako -1, zaś 11111111 w systemie dwójkowym odpowiada 255 w dziesiątkowym, a nie żadne -1.
Polimerek

Tak i nie. To, czy 1111 1111 oznacza 255 czy -1 zależy od przyjętej konwencji. Matusz 14:19, 5 gru 2002 (CET)

OK. Ale w takim razie trzeba jasno wyjaśnić o co chodzi w tej konwencji i jak odróżnić w takim razie że w jednym przypadku 11111111 to -1 a w innym 255...
Polimerek

Zazwyczaj jest to realizowane przez kompilator, przy użyciu na przykład rejestru flag (dla procesorów PC-towych), o ile wiem nie ma formalnego zapisu dla ludzi, oprócz kontekstu (na przykład umawiamy się, że mówimy o liczbach ze znakiem i wtedy mamy dostępne liczby ujemne, jak się umówimy, że chodzi o liczby bez znaku, to dostaniemy tylko dodatnie) Matusz 15:31, 5 gru 2002 (CET)

To wtedy ta "flaga" jest faktycznym zapisem znaku liczby, a konwencja odwracania zapisu jest po prostu z jakichś technicznych względów wygodna. Przecież komputer we wszelkich obliczeniach też musi "rozróżnić" 255 od -1. Z samymi liczbami jako takimi nie ma to jednak nic wspólnego. Liczba i jej sposób zapisu w maszynie to dwie osobe sprawy... Jeśli przyjąć, że 11111111 zawsze jest rozumiane przez komputer jako -1 to jak w takim razie zapisuje się w tej konwencji 255?

Hmmm, zdaje się, że za dużo na raz chciałem powiedzieć. Jest tak:

  • Jest zapis matematyczny i zapis informatyczny. Zapis matematyczny jest potencjalnie nieograniczony, zapis dla komputerów z konieczności musi uwzględnić rozmiar komórki pamięci oraz wielkość całej pamięci - to wymusza pewne kompromisy.
  • Tradycyjnie w nauczaniu o systemie dwójkowym w szkołach poniżej wyższych mowa jest wyłącznie o liczbach całkowitych nieujemnych.
  • Istnieją różne możliwości rozszerzenia tego zapisu o liczby ujemne:
    • można zapisywać najstarszy bit jako bit znaku, a całą resztę pozostawić jako odpowiednik liczby dodatniej
    • można użyć dopełnienia do jedynki - prostej zamiany wszystkich bitów
    • można użyć dopełnienia do dwójki - zamiana wszystkich bitów i dodanie jedynki jak do liczby bez znaku
  • rejestr flag może oznaczać interpretację liczby jako 'ze znakiem' lub 'bez znaku', ale sama informacja o znaku konkretnej liczby jest zapisana w niej.
  • oprócz tego wszystkiego, dla skomplikowania spraw istnieje cały zestaw sposobów zapisu liczb rzeczywistych (a właściwie pewnych ich podzbiorów).
  • jak już pisałem jest to kwestia konwencji i technicznej konieczności, w kodzie C może to wyglądać tak:
unsigned short int ala = 255; /* w obliczeniach ma wartość 255 */
short int becia = 255; /* przy założeniu, że short int to jeden bajt dostaniemy ostrzeżenie o przypisaniu za dużej liczby dodatniej i wartość -1 */
unsigned short int cesia = -1; /* podobnie jak wyżej, lecz w obliczeniach ma wartość 255 */
  • dla języka maszynowego istnieją oddzielne zestawy operacji dla interpretacji liczb ze znakiem i bez znaku (na przykład porównania mają zupełnie różne kody)
  • obejrzyj sobie http://www.wikipedia.org/wiki/Integral_data_type rozdział "Representing integers"

Matusz 16:32, 5 gru 2002 (CET)

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com