2012-07-14 13 views
10

Siempre me he preguntado por qué los ceros a la izquierda (0) se usan para representar números octales, en lugar de — por ejemplo — 0o. El uso de 0o sería igual de útil, pero no causaría tantos problemas como 0 es líder (por ejemplo, parseInt('08'); en JavaScript). ¿Cuál es la (s) razón (es) detrás de esta elección de diseño?¿Por qué se usan ceros a la izquierda para representar números octales?

Respuesta

17

Todos los idiomas modernos importan esta convención de C, que la importó de B, que la importó de BCPL.

Excepto que BCPL usó #1234 para octal y #x1234 para hexadecimal. B se ha apartado de esta convención porque # era un operador unario en B (entero a la conversión de coma flotante), por lo que # 1234 no se pudo usar, y # como indicador de base fue reemplazado por 0.

Los diseñadores de B intentaron para hacer la sintaxis muy compacta. Supongo que esta es la razón por la que no usaron un prefijo de dos caracteres.

1

"0b" se utiliza a menudo para binario en lugar de octal. El "0" inicial es, sospecho que para "O -ctal".

Si sabe que va a analizar octal entonces use parseInt('08', 10); para que se trate el número como base diez.

+0

Sí, lo sé. Solo me pregunto por qué se usa, porque es un poco confuso para los novatos. Con '0b' cometí un error, corregido en' 0o'. – Hauleth

+0

"Cero" como en "octal"? Apenas. Mi especulación sería que simplemente era el formato numérico predominante del día, al igual que el hexágono ahora. – tripleee

+0

@triplee: ¿Te das cuenta de que 0 parece una O, ¿verdad? No es como si la gente no hubiera estado reemplazando 13773rs con números para y34rs. –

Cuestiones relacionadas