Zawsze zastanawiałem się, dlaczego wiodące zera (0
) są używane do reprezentowania liczb ósemkowych, zamiast — na przykład — 0o
. Używanie 0o
byłoby równie pomocne, ale nie powodowałoby tylu problemów, co prowadzenie 0
es (np. parseInt('08');
w JavaScript). Jakie są przyczyny tego wyboru projektu?Dlaczego wiodące zera są używane do reprezentowania liczb ósemkowych?
10
A
Odpowiedz
17
Wszystkie współczesne języki importują tę konwencję z C, która zaimportowała ją z B, która zaimportowała ją z BCPL.
Z wyjątkiem BCPL używanego #1234
dla ósemkowego i #x1234
dla heksadecymalnego. B odszedł od tej konwencji, ponieważ # był operatorem jednoargumentowym w B (konwersja liczby całkowitej na zmiennoprzecinkowe), więc nie można było użyć # 1234, a # jako wskaźnik bazowy zastąpiono 0.
Projektanci B próbowali aby składnia była bardzo zwarta. Sądzę, że to jest powód, dla którego nie używali prefiksu dwuznakowego.
1
"0b" jest często używane do binarnego, a nie do ósemkowego. Prowadzące "0" jest, podejrzewam, że "O -ctal".
Jeśli wiesz, że będziesz analizować ósemkowo, użyj parseInt('08', 10);
, aby potraktować numer jako dziesiętną.
Powiązane problemy
- 1. Java dodaje zera wiodące do numeru
- 2. Jak mogę wyprowadzić wiodące zera w Ruby?
- 3. Python dodaje wiodące zera za pomocą str.format
- 4. Konwersja int do QString z zerowym dopełnieniem (zera wiodące)
- 5. C++ zaokrąglania liczb od zera
- 6. Dlaczego używane są anonimowe funkcje używane w strukturze kodu JavaScript?
- 7. Do czego są używane silnie połączone komponenty?
- 8. Gdzie są używane konstruktory wirtualne?
- 9. Jaka jest zalecana klasa do reprezentowania pudełka?
- 10. Datownik MySQL - dlaczego wszystkie zera?
- 11. Dlaczego w projektach JavaScript używane są złe praktyki niepożądane?
- 12. Dlaczego sterty są lepsze niż drzewa binarne do reprezentowania kolejki priorytetowej?
- 13. Dlaczego Collection.checkedMap i znajomi nie są częściej używane?
- 14. określają, które pakiety są używane.
- 15. Dlaczego często używane są metody pomocnicze w JavaScript?
- 16. Dlaczego haskell używa typu ReadS do reprezentowania funkcji?
- 17. Dlaczego Resharper uważa, że te wyliczenia nie są nigdy używane?
- 18. Dlaczego średniki nie są używane po instrukcjach if/else?
- 19. init NSData do zera SWIFT
- 20. W języku C#, jak mogę użyć Regex.Replace, aby dodać wiodące zera (jeśli to możliwe)?
- 21. Jakie soczewki są używane/przydatne dla?
- 22. Dlaczego są używane identyfikatory ciągów do uzyskiwania dostępu do danych zasobów?
- 23. Parametry RegisterClientScriptBlock są używane w rzeczywistych scenariuszach?
- 24. Dlaczego wykładniki są wymagane dla liczb rzeczywistych szesnastkowych w Javie
- 25. Animacja skali UIView do zera
- 26. Zatrzymywanie dużej liczby zera, które są drukowane (notacja naukowa)
- 27. Wyświetlanie wiodącego zera w gtk.SpinButton
- 28. Vowpal Wabbit jak do reprezentowania kategorycznych możliwości
- 29. Jakie są domyślne repozytoria używane przez SBT?
- 30. Jakie techniki są używane do debugowania złożonych wiązań guice?
Tak, wiem. Zastanawiam się tylko, dlaczego jest używany, ponieważ dla początkujących jest to nieco mylące. W '0b' popełniłem błąd, ustaliłem na' 0o'. – Hauleth
"Zero" jak w "ósemkowym"? Ledwie. Moją spekulacją byłoby, że był to po prostu powszechny format liczb dnia, podobnie jak teraz jest hex. – tripleee
@triplee: Zdajesz sobie sprawę, że 0 wygląda jak O, prawda? To nie tak, że ludzie nie zastąpili 13773r liczbami za trzydzieści. –