Discussion:
Liczba pi binarnie
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Robbo
2015-10-27 14:34:09 UTC
Permalink
Witam.

Piszę na tę grupę, bo nie mogę poradzić sobie z prostą zdaje się sprawą.

Mamy cyfry po przecinku liczby Pi w postaci binarnej:
.00100100001111110110101010001000100001011010001100001000...
(kolejno, począwszy od lewej strony).

Potrzebuję te kolejne cyfry binarne wprowadzać na wejście pewnego algorytmu,
który możemy potraktować jako czarną skrzynkę.
Cyfry binarne liczby Pi chcę skleić po 8 w bajty i zapisać do pliku
binarnego. Potem program będzie pracował na tym pliku binarnym -- będzie
odczytywał kolejne bajty,
wyłuskiwał z nich kolejne bity jeden po drugim i wprowadzał je do algorytmu
(czarnej skrzynki).

Czy poprawne będą następujące bajty reprezentujące ciąg binarny cyfr liczby
Pi?
kolumna najmłodszych bitów
|
00100100 = 36
00111111 = 252
01101010 = 86
10001000 = 17

Czyli kolejne bajty w pliku binarnym będą miały wartości dziesiętne 36, 252,
86, 17 ?

Z góry dziękuję za pomoc.

R.


---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
J.F.
2015-10-27 19:02:49 UTC
Permalink
Post by Robbo
Czy poprawne będą następujące bajty reprezentujące ciąg binarny cyfr liczby
Pi?
kolumna najmłodszych bitów
|
00100100 = 36
00111111 = 252
01101010 = 86
10001000 = 17
Czyli kolejne bajty w pliku binarnym będą miały wartości dziesiętne 36, 252,
86, 17 ?
Moj windows calculator podaje
3.243F6A88

11 0010 0100 0011 1111 0110 1010 1000 1000

czyli .... uwazaj na "endianness" - z ktorej strony bity najbardziej
znaczace. Bity, polowki, bajty ...

Oczywiscie moga byc dowolnie, ale przyjelo sie przynajmniej bajty
zapisywac odwrotnie, zeby 252 oznaczalo FC a nie 3F.

J.
bartekltg
2015-10-27 23:39:24 UTC
Permalink
Post by Robbo
Witam.
Piszę na tę grupę, bo nie mogę poradzić sobie z prostą zdaje się sprawą.
(kolejno, począwszy od lewej strony).
Potrzebuję te kolejne cyfry binarne wprowadzać na wejście pewnego
algorytmu, który możemy potraktować jako czarną skrzynkę.
Cyfry binarne liczby Pi chcę skleić po 8 w bajty i zapisać do pliku
binarnego. Potem program będzie pracował na tym pliku binarnym -- będzie
odczytywał kolejne bajty,
wyłuskiwał z nich kolejne bity jeden po drugim i wprowadzał je do
algorytmu (czarnej skrzynki).
Czy poprawne będą następujące bajty reprezentujące ciąg binarny cyfr
liczby Pi?
kolumna najmłodszych bitów
|
00100100 = 36
.00100100
Post by Robbo
00111111 = 252
00111111
Post by Robbo
01101010 = 86
01101010
Post by Robbo
10001000 = 17
10001000
10000101
10100011
00001000...

Wyglądają na poprawne. Samej wartości {pi} = 0.1415... nie
przeliczałem.
Post by Robbo
Czyli kolejne bajty w pliku binarnym będą miały wartości dziesiętne 36,
252, 86, 17 ?
Tak. Tylko pamiętaj, że masz to 252 (=0xFC )rzeczywiście zapisać
binarnie. Nie zapisz z rozpędu pliku tesktowego z tymi liczbami
po przecinku;] Z pośpiechu nie takie rzeczy się działy.

Pewnie używasz jakiegoś języka programowania (c, c++, java, python
pascal...). Otwórz plik z liczbą pi tekstowo, otwórz drugi plik
(do zapisu) binarnie, stwórz 8 bitową zmienną (nazywają się różnie
zależnie od języka), nazwijmy ją c.

powtarzaj w pętli:
wyzeruj c;
powtórz 8 razy:
odczytaj kolejną cyfrę z pliku, zapisz jej _wartość_ do x;
(jeśli plik był pusty, przerwij głowną pętlę/zakończ program)
c := 2*c+x ;
zapisz c do pliku binarnego.

pzdr
bartekltg
peter
2015-10-28 18:37:26 UTC
Permalink
Post by Robbo
.00100100001111110110101010001000100001011010001100001000...
(kolejno, począwszy od lewej strony).
To jest liczba binarna liczby pi-3!
Post by Robbo
Cyfry binarne liczby Pi chcę skleić po 8 w bajty i zapisać do pliku binarnego. ,.....
...............
Czy poprawne będą następujące bajty reprezentujące ciąg binarny cyfr liczby Pi?
kolumna najmłodszych bitów
00100100 = 36
00111111 = 252
01101010 = 86
10001000 = 17
Czyli kolejne bajty w pliku binarnym będą miały wartości dziesiętne 36, 252, 86, 17 ?
hm. W ten sposób kodowane są bajty wspak!
W zapisie liczby pi-3 najstarszy bit masz po lewej stronie, a ty zakodowałeś bajty gdzie
najstarszy bit jest po prawej stronie. Przy ewentualnym odkodowaniu ponownie na bity
musisz również to zrobić wspak.
Poniżej masz nieco więcej wyników.
Kolejno - bity, bajty normalnie, bajty wspak

{{0,0,1,0,0,1,0,0},36,36}
{{0,0,1,1,1,1,1,1},63,252}
{{0,1,1,0,1,0,1,0},106,86}
{{1,0,0,0,1,0,0,0},136,17}
{{1,0,0,0,0,1,0,1},133,161}
{{1,0,1,0,0,0,1,1},163,197}
{{0,0,0,0,1,0,0,0},8,16}
{{1,1,0,1,0,0,1,1},211,203}
{{0,0,0,1,0,0,1,1},19,200}
{{0,0,0,1,1,0,0,1},25,152}
{{1,0,0,0,1,0,1,0},138,81}
{{0,0,1,0,1,1,1,0},46,116}
{{0,0,0,0,0,0,1,1},3,192}
{{0,1,1,1,0,0,0,0},112,14}
{{0,1,1,1,0,0,1,1},115,206}
--
Peter
s***@gmail.com
2015-11-19 16:02:22 UTC
Permalink
Post by Robbo
Witam.
Piszę na tę grupę, bo nie mogę poradzić sobie z prostą zdaje się sprawą.
.00100100001111110110101010001000100001011010001100001000...
(kolejno, począwszy od lewej strony).
Potrzebuję te kolejne cyfry binarne wprowadzać na wejście pewnego algorytmu,
który możemy potraktować jako czarną skrzynkę.
Cyfry binarne liczby Pi chcę skleić po 8 w bajty i zapisać do pliku
binarnego. Potem program będzie pracował na tym pliku binarnym -- będzie
odczytywał kolejne bajty,
wyłuskiwał z nich kolejne bity jeden po drugim i wprowadzał je do algorytmu
(czarnej skrzynki).
Czy poprawne będą następujące bajty reprezentujące ciąg binarny cyfr liczby
Pi?
kolumna najmłodszych bitów
|
00100100 = 36
00111111 = 252
01101010 = 86
10001000 = 17
Czyli kolejne bajty w pliku binarnym będą miały wartości dziesiętne 36, 252,
86, 17 ?
Z góry dziękuję za pomoc.
R.
==============

W zasadzie Bartek odpowiedział Ci na pytanko. Natomiast ja pozwolę sobie na pytanie na Twoje pytanie: Po cholerę wyważać otwarte drzwi? Jeżeli tylko z czystej ciekawości, no to w pełni rozumiem. A jeżeli chodzi o rozwiązania do zastosowań komercyjnych, to są gotowe i w zupełności legalne rozwiązania softwarowe i nawet sprzętowe. No więc skąd pytanie, o co Ci chodzi ?!!
Loading...