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

Przelicznik z liczby dziesiętnej na binarną.

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
387 wizyt
pytanie zadane 11 stycznia 2021 w JavaScript przez Mariusz3214 Nowicjusz (130 p.)
Cześć, potrzebuje napisać funkcje w JavaScript która za argument będzie przyjmować liczbę dziesiętną a przy użyciu pętli for zamieni ją na binarną. Ktoś ma pomysł jak to napisać?

4 odpowiedzi

0 głosów
odpowiedź 11 stycznia 2021 przez SzkolnyAdmin Szeryf (76,060 p.)
A jakbyś zapytał Wujka Google'a o to? A jak chcesz sam, to przypomnij sobie szkolny algorytm zamiany. Pokaż kod, to może coś ktoś poradzi na twój problem.
komentarz 11 stycznia 2021 przez Mariusz3214 Nowicjusz (130 p.)
Jedynę co znalazłem to metodę .toString(2). Nie mogę znaleźć owej funkcji z użyciem pętli to pytam tutaj ;)
komentarz 11 stycznia 2021 przez SzkolnyAdmin Szeryf (76,060 p.)
Na pewno chodzi o pętle for? Może while.
komentarz 11 stycznia 2021 przez Mariusz3214 Nowicjusz (130 p.)
Napewno o For. A jak byś to zrobił pętlą while?
komentarz 11 stycznia 2021 przez SzkolnyAdmin Szeryf (76,060 p.)
Tak jak w szkole: powtarzał dzielenie przez 2, dopóki całkowita część wyniki dzielenia będzie rożna od zera i zapisywał reszty z dzielenia. Potem wystarczy wyświetlić reszty w odwrotnej kolejności.
0 głosów
odpowiedź 11 stycznia 2021 przez wizarddos Pasjonat (20,520 p.)
komentarz 11 stycznia 2021 przez SzkolnyAdmin Szeryf (76,060 p.)
Z tym, że pewnie chodzi o samodzielne napisanie funkcji, a nie użycie gotowej metody.
komentarz 11 stycznia 2021 przez wizarddos Pasjonat (20,520 p.)
Nie wiem po co pisać to na nowo ale ok. W takim razie chyba nie pomogę
2
komentarz 11 stycznia 2021 przez Tomek Sochacki Ekspert (229,500 p.)
chyba po to są w języku gotowe metody aby nie tworzyć koła na nowo co? umiejętnosc programowania to nie rozwiązywanie wszystkiego na nowo tylko wlaśnie umiejętność logicznego myślenia i korzystania z dobrodziejstw języka...
komentarz 11 stycznia 2021 przez SzkolnyAdmin Szeryf (76,060 p.)
@Tomek Sochacki: aby nauczyć się spojrzenia na problem z różnych punktów: zadnie jest do zrobienia metoda szkolną (zapisujesz kolejne reszty z dzielenia przez 2, itd.). można użyć przesunięcia bitowego lub metody toString(2). A potem porównać, np. szybkość wykonania na dużej partii danych. W realnym programowaniu też się to przydaje.
2
komentarz 11 stycznia 2021 przez Tomek Sochacki Ekspert (229,500 p.)
i tak i nie... wg mnie nie jest to coś, czego powinien się uczyć nowy programista. Potem na rozmowach okazuje się, że ktoś umie tylko pracować z podstawowymi pętlami czy robić jakieś wyszukane algorytmy, a nie ma pojęcia o tworzeniu dobrego oprogramowania... zamiast robić miliony algorytmów nie lepiej na przykład poświęcić czas na dyskusje o wzorcach projektowych, o zasadach dobrego kodu itp. itd.? Jak przyjdzie Ci w pracy zrobić algorytm X to znajdziesz sobie szybko informacje w necie co i jak.

Moim zdaniem uczeń z technikum czy student powinien wynieść przede wszystkim dobre praktyki jeśli chodzi o programowanie, bazy danych itp. itd. Dlatego też osobiście uważam i zawsze będę to powtarzał, że wg mnie uczyć np. programowania, baz danych itp. itd. powinien ktoś, kto zna to nie tylko teoretycznie z książek ale chociaż kilka lat pracował w tym komercyjnie... wtedy dopiero tak naprawdę poznajesz co to prawdziwy kod...
komentarz 11 stycznia 2021 przez SzkolnyAdmin Szeryf (76,060 p.)
Problemem jest równanie w dół w polskich szkołach. w jednej klasie pracujesz naprawdę z dobrymi programistami (i takich kierujesz potem do znanych ci firm - taka szkolna headhunterka :), ale większość mimo nawet szczerych chęci nie jest w stanie ogarnąć w ciągu roku instrukcji warunkowej (nie śmiej się, to prawda). Uwalić na koniec roku? A kogo będziesz uczył w następnej klasie - ty i twoi koledzy? Kasa, misiu, kasa. Szkoła to nie urząd, gdzie dostawi się jedno biurko i można stworzyć etat. Nawet  w komunie pracowała w gospodarce rynkowej: nie było dzieci = nie ma klasy = nie ma etatu.
1
komentarz 11 stycznia 2021 przez Tomek Sochacki Ekspert (229,500 p.)
i tak i nie... pamiętajmy, że szkoła średnia nie jest obowiązkowa... nikt nie zmusi Cię do jej ukończenia, a druga kwestia, że dzisiaj wielu młodych ludzi idzie na siłę na kierunki "na topie" itp. itd. czy nawet w ogóle na studia itd... gdzie mogliby się naprawdę świetnie sprawdzić w zpełnie innej branży, czasami w pracach np. bardziej fizycznych itp. itd.

I w żaden sposób nie piszę tego w kontekście "ten jest gorszy bo nie radzi sobie w technikum" czy coś... nie. Osobiście uważam, że często znacznie trudniej nauczyć się dobrze pracy fizycznej niż wyuczyć się teorii na studiach, technikum itp. Dla mnie dobry murarz, lekarz, programista, adwokat są na jednym poziomie, nie ma lepszych czy gorszych... niech każdy robi to, co lubi i co chce robić.

A co do uwalenia to wcale nie musi tak być... problemem jest to, że wielu młodych ludzi twierdzi iż nie ma czasu na naukę i nie może sobie z czymś poradzić co jest dla mnie bzdurą totalną... O braku czasu to może powiedzieć osoba mająca na utrzymaniu rodzinę, stałą pracę, dzieci, dom itp. itd. ale młody człowiek mający tylko szkołę + swoje hobby pozalekcyjne? Serio... takim problemem jest przysiąść np. parę tygodni więcej wieczorami i się pouczyć?

Nie jest i właśnie dlatego wg mnie każdy powinien wybierać dla siebie taką drogę, jaka go faktycznie interesuje, a nie iść na siłe np. na informatyka tylko dlatego, że w artykułach na onecie piszą, że informatyk dużo zarabia...

A druga sprawa, że niestety z wielu opowiadań słyszałem, że jakość nauczania w szkołach jest dzisiaj naprawdę tragiczna... i to nie wina uczniów ale nauczycieli. Pamiętam ze swoich lat szkolnych nauczycieli, którzy faktycznie dużo wymagali i nie bali się uwalać ludzi na sprawdzianach itp. itd. I dzisiaj, po X latach od szkoły nikt z osób, które miały z nimi problemy nie mówi, że to było złe. Wręcz przeciwnie, wiele osób uważa że dzięki temu faktycznie byli zmuszeni aby jakoś się wyuczyć podstaw tej matmy, fizyki, chemii, historii itp. itd. i coś w głowach zostało do dzisiaj... Ale aby to było możliwe to potrzeba by nauczycieli z pasją do tego zawodu, umiejętnościami itp.
0 głosów
odpowiedź 11 stycznia 2021 przez tmar1212 Bywalec (2,600 p.)
edycja 11 stycznia 2021 przez tmar1212

Pseudokod, przy użyciu while, konwert na for jest trywialny:

function decimal_to_binary(n):
  """returns binary as a string"""
  if n == 0: 
    return "0"
  result = ""
  while n > 0:
    result += str(n % 2)  # str - make string from an integer
    n = n / 2  # division in integers
  return reverse(result) 

Możesz też zwracać tablicę, wtedy niepotrzebne będzie konwertowanie do stringa; generalnie temat jest przewałkowany w internecie i podręcznikach...

0 głosów
odpowiedź 11 stycznia 2021 przez VBService Ekspert (203,950 p.)
edycja 12 stycznia 2021 przez VBService

Muszę przychylić się do wypowiedzi:

@Tomek Sochacki,
... chyba po to są w języku gotowe metody aby nie tworzyć koła na nowo co?

bo zapomnieliście tu koledzy, że javascript jest specyficzna pod bardzo ważnym względem:

JavaScript (JS) to skryptowy (interpretowany lub kompilowany metodą JIT) język programowania, w którym funkcje są "obywatelami pierwszej kategorii" - obiektami, które

co niesie za sobą m. in. taką konsekwencję, że "wbudowane metody" ("gotowe metody" - prekompilowane, wbudowane w "silnik") zawsze będą "szybciej działać" niż nie jeden wyrafinowany algorytm. wink Druga sprawa języki się rozwijają, spora grupa ludzi pracuje nad "ulepszeniem" gotowych metod, i raczej ich algorytmy są dopracowane i wydajne.

a propos

... liczbę dziesiętną a przy użyciu pętli for zamieni ją na binarną ...

Moja propozycja takiej "pętli", (myślę, że "ze zrobieniem" z tego funkcji, już sobie sam poradzisz wink) Codepen

let random = (min, max) => { return Math.floor(Math.random() * (max-min+1))+min; }
const BITS = 8;

const id_interval = setInterval(() => {
  let number = bit = random(0, 255);
  let binary = '';

  for (let i=0; i<BITS; ++i) {
    binary += (bit & 0x80) ? '1' : '0';
    bit <<= 1;
  }

  console.log(`${number} = ${binary}`);
}, 1000);

 

Podobne pytania

0 głosów
1 odpowiedź 653 wizyt
0 głosów
1 odpowiedź 8,771 wizyt
pytanie zadane 17 października 2016 w C i C++ przez kakola3 Początkujący (270 p.)
0 głosów
5 odpowiedzi 2,593 wizyt
pytanie zadane 14 maja 2016 w C i C++ przez Evelek Nałogowiec (29,060 p.)

89,745 zapytań

138,348 odpowiedzi

309,372 komentarzy

59,659 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 747p. - Argeento
  2. 696p. - Mikbac
  3. 693p. - Michal Drewniak
  4. 692p. - rucin93
  5. 688p. - Łukasz Eckert
  6. 679p. - ssynowiec
  7. 678p. - TheLukaszNs
  8. 645p. - Jarosław Roszyk
  9. 640p. - adrian17
  10. 592p. - nidomika
  11. 522p. - JMazurkiewicz
  12. 515p. - Hubert Chęciński
  13. 506p. - tokox
  14. 501p. - Rafał Budzis
  15. 498p. - overcq
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...