Lo que está haciendo es devolverte el valor de octetos (¿bits?):
si pones:
0001 devuelve 1 (8^0)*1
0002 devuelve 2 (8^0)*2
0008 devuelve 8 (8^0)*3
0009 devuelve 9 (8^0)*4
0010 devuelve 8 (8^1*1)
0011 devuelve 9 (8^1*1+1*1)
0020 devuelve 16 (8^1*2)
00100 devuelve 64 (8^2*1)
00200 devuelve 128 (8^2*2)
001000 devuelve 512 (8^3*1)
001234 devuelve 668:
001000 = (8^3)*1 = 512
000200 = (8^2)*2 = 128
000030 = (8^1)*3 = 24
000004 = (8^0)*4 = 4
suma total ..... = 668
Ahora... ¿por qué?... pues vaya usted a saber pór qué javascript decide que dos ceros a la izquierda es eso y no otra cosa...
¿que cómo lo sé? ensayo-error de toda la vida, como la rata tira de la palanca para obtener comida...