Wątek przeniesiony 2018-11-27 16:48 z C/C++ przez kq.

Wytłumaczy ktoś bo nie wszystko rozumiem jak to obliczac?

0

Przedstaw jako okresowy ułamek binarny liczby:
3/8, tu mi wyszlo 0,10110

3 5/16 tu 011.1010

2 1/6, tu 010.10100

Jakie będą ich przybliżenia skończonymi ułamkami binarnymi z dokładnością do 4 i 8 cyfr?
Jak zrobic te przyblizenia i zastanawiam sie czy dobrze to wyszlo?

1

Kiedyś coś takiego skrobnąłem, wydaje się na temat: https://dev.krzaq.cc/post/how-to-tell-if-a-fraction-can-be-finitely-represented-in-binary-or-any-other-base/

Twoje obliczenia są niepoprawne:

3 5/16 tu 011.1010

źle, 0.1010 to 10/16, a nie 5/16
Posprawdzaj z wolframem, np: https://www.wolframalpha.com/input/?i=(53%2F16)+base+2

0

A te dwa inne są dobrze?
Bo to mnożę 3/8*2 wtedy wychodzi 0.10110(spisanie od dołu) czy 0,01101 (spisanie od góry)?

0

mnożenie przez 2 to przesunięcie wartości o 1 w lewo, tak jak mnożenie przez 10 w base 10. W rzeczy samej, jest to mnożenie przez 102.

0.0112*102 to 0.112

0

A to ?
Jakie będą ich przybliżenia skończonymi ułamkami binarnymi z dokładnością do 4 i 8 cyfr?
Nie bardzo rozumiem jak to zrobić

0

Dokładnie to opisałem na blogu, pod linkiem wyżej.

1/6 nie ma skończonej reprezentacji binarnej (ani dziesiętnej, swoją drogą), więc możesz co najwyżej pokazać przybliżenie z dokładnością do tylu cyfr, ile sobie zażyczysz.

0

Więc
3/8=0,011
3 5/16=11,0101
2 1/6=10,00(1010)
?

0

Tak, choć ten ostatni zapis trochę dziwny jest, bo:

  • jeśli zapisujesz okres, to po prostu zapisz 10.0(01)2
  • jak przybliżasz x cyfr po przecinku to przybliż do tylu, nie podawaj żadnych danych o okresowości
0

Nie bardzo rozumiem te przybliżenia i opis na tym poście byś mógł wytłumaczyć to na tych przykladach?

0

http://cs.furman.edu/digitaldomain/more/ch6/dec_frac_to_bin.htm

Ok, np. 3/8:

0.75 0.375 * 2
1.5 0.75 * 2
1.0 0.5 * 2
koniec, przenieśliśmy zero

Czyli 0.011

2 i 1/6. Część całkowita jest oczywista, 1/6:

​​
2/6 1/6 * 2
4/6 2/6 * 2
1 i 2/6 4/6 * 2
4/6 2/6 * 2 tutaj widać, że mamy okres, bo 2/6 jest wyżej

Zgodnie z tą samą zasadą, wartości mniejsze od 1 to zera, a równe bądź większe to jedynki:
0.0(01)

0

A 3 5/16

10/6  | 5/10*2
1 4/16 | 10*2

czyli 0.(01)?

0

Nie, przenosisz na prawo tylko część ułamkową, czyli 4/6. w jaki sposób 2*10 wyszło ci 1 i 4/16 to ja nie wiem.

0

10/16 | 5/16 * 2
1 4/16 |10/16 * 2
bo tak robiłam

0

Czekaj, to tam masz części szóste czy szesnaste?

5/6

wartość · 2 ​​ ≥1
5/6 10/6 = 1 + 4/6 1
4/6 8/6 = 1 + 2/6 1
2/6 4/6 0
4/6 powtórka 8/6 1

czyli 0.1(10)

5/16

wartość · 2 ​​ ≥1
5/16 10/16 0
10/6 20/16 = 1 + 4/16 1
4/16 8/16 0
16/16 32/16, bez reszty, koniec 1

0.0101, bez okresów

0

jest 3 i 5/16

0

No to 3 dodaj sobie sam ;​)

0

11.0101 ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1