Mi sono sempre chiesto perché gli zeri iniziali (0
) sono utilizzati per rappresentare numeri ottali, invece di — per esempio — 0o
. L'utilizzo di 0o
potrebbe essere altrettanto utile, ma non causerebbe il numero di problemi pari a 0
(ad esempio parseInt('08');
in JavaScript). Quali sono le ragioni di questa scelta progettuale?Perché gli zeri iniziali vengono utilizzati per rappresentare i numeri ottali?
risposta
Tutte le lingue moderne importano questa convenzione da C, che l'ha importata da B, che l'ha importata da BCPL.
Tranne BCPL utilizzato #1234
per ottale e #x1234
per esadecimale. B è partito da questa convenzione perché # era un operatore unario in B (intero alla conversione in virgola mobile), quindi # 1234 non poteva essere usato, e # come indicatore di base è stato sostituito con 0.
I progettisti di B provato per rendere la sintassi molto compatta. Immagino che questo sia il motivo per cui non hanno usato un prefisso di due caratteri.
"0b" è spesso utilizzato per binario anziché per ottale. Lo "0" iniziale è, sospetto per "O -ctal".
Se sai che stai per analizzare l'ottale, usa parseInt('08', 10);
per farlo considerare il numero come base dieci.
Sì, lo so. Mi chiedo solo perché è usato, perché è un po 'di confusione per i principianti. Con '0b' ho commesso un errore, corretto su' 0o'. – Hauleth
"Zero" come in "ottale"? Quasi. La mia ipotesi sarebbe che fosse semplicemente il formato numerico prevalente del giorno, proprio come l'esadecimale è ora. – tripleee
@triplee: Ti rendi conto che 0 sembra un O, giusto? Non è che le persone non abbiano sostituito 13773rs con i numeri per y34rs. –