Zamień z systemu dziesiętnego na dwójkowy liczbę
-
- Użytkownik
- Posty: 57
- Rejestracja: 4 lis 2007, o 10:59
- Płeć: Mężczyzna
- Lokalizacja: Polska
- Podziękował: 1 raz
Zamień z systemu dziesiętnego na dwójkowy liczbę
Zamień z systemu dziesiętnego na dwójkowy liczbę
a) 367
b) 0,125
c) 0,025
d) 170,105
a) 367
b) 0,125
c) 0,025
d) 170,105
Zamień z systemu dziesiętnego na dwójkowy liczbę
Kod: Zaznacz cały
//działa dla r>=1
m=2^? // np. m=256
input r
s= 0
while m>r
m /= 2
while s != r
if s+m > r print(0)
else
print(1)
s += m
if m==1 then print('.')
m /= 2
while m >= 1
print (0)
m /= 2
1.025 (dec) =
1.000001100110011001100110011001100110011001100110011001100110011 (bin)
liczba dwójkowych cyfr które otrzymamy, zależy od typu użytych zmiennych, tu extended albo long double
dla double otrzymamy 1.025 (dec) =
1.000001100110011001100110011001100110011001100110011 (bin)
a single da
1.025 (dec) =
1.00000110011001100110011 (bin)
Widać tu ciekawą rzecz, rzecz z której nie każdy zdaje sobie sprawę.
Dziesiętna liczba 1.025, dwójko jest liczbą okresową. Podobnie jak 0.1.
Skoro jest okresowa, to znaczy, że NIE ZMIEŚCI SIĘ W PAMIĘCI KOMPUTERA!
Ile razy obróci się pętla?
Kod: Zaznacz cały
x=0
while x<1
x += 1/1000000
Kod: Zaznacz cały
if y==0.1
Ostatnio zmieniony 4 lut 2008, o 13:22 przez Xitami, łącznie zmieniany 1 raz.
-
- Użytkownik
- Posty: 107
- Rejestracja: 7 lis 2006, o 12:03
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Pomógł: 20 razy
Zamień z systemu dziesiętnego na dwójkowy liczbę
\(\displaystyle{ (367)_{10} = (101101111)_{2}\\
(0,125)_{10} = (0,001)_{2}\\
(0,025)_{10} = (0,000(0011))_{2}\\
(170,105)_{10} \approx (10101010,000110101110000101000111101011)_{2}\\}\)
widzę, że ktoś uprzedził :>
(0,125)_{10} = (0,001)_{2}\\
(0,025)_{10} = (0,000(0011))_{2}\\
(170,105)_{10} \approx (10101010,000110101110000101000111101011)_{2}\\}\)
widzę, że ktoś uprzedził :>
Zamień z systemu dziesiętnego na dwójkowy liczbę
\(\displaystyle{ (170.105)_{10}=(10101010.00011(01011100001010001111))_2}\)
-
- Użytkownik
- Posty: 107
- Rejestracja: 7 lis 2006, o 12:03
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Pomógł: 20 razy
Zamień z systemu dziesiętnego na dwójkowy liczbę
Xitami pisze: Ile razy obróci się pętla?Kod: Zaznacz cały
x=0 while x<1 x += 1/1000000
nieskończenie wiele
wiedziałem, że gdzieś tu jest okresXitami pisze:\(\displaystyle{ (170.105)_{10}=(10101010.00011(01011100001010001111))_2}\)
Zamień z systemu dziesiętnego na dwójkowy liczbę
Wiedziałem, że musi być i w dodatku mały. W ogólności byłoby z tym trochę kłopotu.
Dodałem dziesiętny przecinek, a teraz?
Kod: Zaznacz cały
x=0
while x<1
x += 1/1000000.0
-
- Użytkownik
- Posty: 107
- Rejestracja: 7 lis 2006, o 12:03
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Pomógł: 20 razy
Zamień z systemu dziesiętnego na dwójkowy liczbę
milion.
kwestia, że w pierwszy przypadku jest dzielenie całkowitoliczbowe. tak samo jak:
x += 2/3 jest równoważne z x+=1
x+=1.0/1000 - to zadziała poprawnie [w sensie zgodnie z intuicją]
x+=1/(double)1000 też zadziała
kwestia, że w pierwszy przypadku jest dzielenie całkowitoliczbowe. tak samo jak:
x += 2/3 jest równoważne z x+=1
x+=1.0/1000 - to zadziała poprawnie [w sensie zgodnie z intuicją]
x+=1/(double)1000 też zadziała
Zamień z systemu dziesiętnego na dwójkowy liczbę
gdy X jest typu single, wynik jest dość zaskakujący
warto podywagować
warto podywagować