• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przekształcanie ułamków i liczb ujemnych na system dwójkowy.

Object Storage Arubacloud
0 głosów
3,665 wizyt
pytanie zadane 8 listopada 2017 w Matematyka, fizyka, logika przez Q7V Gaduła (4,250 p.)
Cześć, jak przekształcić niżej podane liczby na system dwójkowy? Istnieje jakiś prosty sposób, który ktoś mógłby wytłumaczyć?

0,1825

-666

2 odpowiedzi

+1 głos
odpowiedź 8 listopada 2017 przez Tomek Sochacki Ekspert (227,510 p.)

Obecnie najbardziej popularnym sposobem zapisu liczb całkowitych w systemie binarnym jest U2 („kod uzupełnień do dwóch”). Konwertowanie odbywa się w trzech krokach:

  1. Konwersja wartości bezwzględnej z liczby dziesiętnej N do jej postaci binarnej.
  2. Negacja bitowa, czyli odwrócenie poszczególnych bitów (zera przechodzą w jedynki, a jedynki przechodzą w zera) – w JavaScript istnieje bitowy operator NOT (tylda „~”) realizujący takie zadanie.
  3. Do otrzymanej postaci po negacji należy dodać binarnie jedynkę.

Zwróć uwagę na bit 31 (skrajny lewy). W liczbie dodatniej ma on wartość zero, co oznacza, że przy zamianie na postać dziesiętną wartość 2^31 mnożymy przez zero. Jeśli liczba jest wartością ujemną, to pierwszy bit dostaje wartość jeden (w kroku 2 gdy następuje bitowa negacja), więc 2^31 mnożymy przez 1 lecz dodatkowo wartość tę uwzględniamy jako ujemną (z minusem). Oznacza to, że w praktyce przy konwersji ujemnej liczby binarnej do postaci dziesiętnej do liczby -(2^31) dodajemy kolejne, następne potęgi dwójki mnożone przez jeden lub zero. W rezultacie otrzymujemy właśnie liczbę -25.

Konwersja w języku JavaScript:

( -666 >>> 0 ).toString(2); //"11111111111111111111110101100110"

 

0 głosów
odpowiedź 8 listopada 2017 przez Aisekai Nałogowiec (42,190 p.)
Ułamki:

https://www.matematyka.pl/220476.htm

Liczby ujemne:

Tak samo jak liczby dodatnie, tylko wtedy bit znakowy równa się 1. Bit znakowy to tak na prawdę najstarszy bit. 1 oznacza ujemną liczbę, 0 dodatnia.
komentarz 8 listopada 2017 przez Q7V Gaduła (4,250 p.)
NIe wiem czy dobrze zrozumiałem, obliczam ujemne normalnie, a wynik przekształcam stosując negację? np. 110 na 001
komentarz 8 listopada 2017 przez Aisekai Nałogowiec (42,190 p.)
Nie. Np 5 w dwojkowym wynosi: 0101

-5 w dwojkowym 1101. Bit na pozycji n-1 (czyli ostatni) determinuje to, czy liczba jest dodatnia czy ujemna
komentarz 8 listopada 2017 przez Tomek Sochacki Ekspert (227,510 p.)
( -5 >>> 0 ).toString(2); //"11111111111111111111111111111011"

-5 w systemie dwójkowym U2 to nie 1101.

komentarz 8 listopada 2017 przez Bondrusiek Maniak (61,370 p.)
Dodawanie jedynek na lewą pozycje dla liczb ujemnych jest tym samym co dodawanie zer dla liczb dodatnich tzn nie zmienia wartości np.

1

to to samo co

01

001

0001

itd
komentarz 8 listopada 2017 przez Aisekai Nałogowiec (42,190 p.)
edycja 13 listopada 2017 przez Aisekai
Nie mówię o U2, chociaż teraz jak tak mówisz to faktycznie - jakby pomyśleć - nie ma de facto w systemie dwojkowym (mówiąc dwojkowy mam na myśli ZM) liczb ujemnych. Liczby ujemne są w ZU1 i ZU2. Przy czym ZU1 nie jest praktycznie używany, jedynie do przechodzenia na ZU2.

 

11111111111111111111111111111011 może w postaci znormalizowanej jest równe -5. Natomiast -5 w postaci nieznormalizowanej w ZU2 wynosi 1011 o ile się nie mylę.

Edit: racja, w ZU2 cyfra nieznaczaca dla czescie całkowitej, z lewej strony jest 1, więc w sumie ta "długa liczba" wynosi 1011

Edit: w ZM jest liczba ujemna.
komentarz 8 listopada 2017 przez Bondrusiek Maniak (61,370 p.)
Trochę Cie nie rozumiem.Co do postaci znormalizowanej to powinno się podawać liczbę w jak najprostszej postaci np. 2 to 10 a nie 0000010. Pamiętam jak na studiach na kolokwium mieliśmy podawać reprezentacje na określonej rejestrze o zadanym rozmiarze np. dla 4 bitowego systemu 2 to 0010 a nie samo 10 więc podawanie reprezentacji wszystkich bitów czasami jest wskazane.
komentarz 8 listopada 2017 przez Aisekai Nałogowiec (42,190 p.)
Postać znormalizowana, z tego co dobrze pamiętam, to przedstawienie liczby jako:

Mantysa*2^(cecha)

Gdzie  1/2<=mantysa<1 a cecha określała o ile trzeba przesunąć cechę by otrzymać liczbę.

A co do zapisu na ilu bitach - zgadzam się
komentarz 8 listopada 2017 przez Bondrusiek Maniak (61,370 p.)

To co podałeś to system zmiennoprzecinkowy. Najpopularniejszym standardem jest IEEE 754. Liczbę można tam przedstawić w systemie 32 bitowym oraz 64bitowym. Co do wartości to się zgadza.

Gdzie  1/2<=mantysa<1 a cecha określała o ile trzeba przesunąć cechę by otrzymać liczbę.

Należy do tego dodać, że pierwszy bit reprezentuje znak

BTW

W takim systemie nie da się przedstawić 0 więc stosuje się taki myk że najmniejsza możliwa liczba w tym systemie reprezentuje 0.

Podobne pytania

0 głosów
2 odpowiedzi 569 wizyt
pytanie zadane 24 października 2019 w Matematyka, fizyka, logika przez RocketPl Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 603 wizyt
0 głosów
2 odpowiedzi 676 wizyt
pytanie zadane 13 września 2017 w C i C++ przez gabi_15 Początkujący (370 p.)

92,568 zapytań

141,422 odpowiedzi

319,639 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...