2011-10-05 12 views
5

Me preguntaba cómo se les ocurrió la forma de establecer permisos utilizando chmod con solo usar números. Por ejemplo:¿Recuperar información múltiple por un solo número?

1 is for execute 
2 is for write 
4 is for read 

Cualquier suma de los hacerle un permiso único:

2+4 = 6 lets you write and read. 
1+4 = 5 lets you execute and read 
1+2+4 = 7 lets you execute, read and write 

¿Existe un algoritmo para esto? Digamos, por ejemplo, tengo 10 elementos y quiero darle a una persona un número y con solo ese número, la persona puede decir qué elementos he elegido.

+0

¿Por qué cerrar la votación? Esto me parece una pregunta perfectamente legítima. –

+0

@AasmundEldhuset: Es una pregunta perfectamente legítima, pero a mí me parece que encajaría mejor en otro sitio SE. Escogería Unix, pero esa no es una opción, entonces SU. – derobert

+0

¡Lol! Esto es solo números binarios. Bienvenido al mundo de las computadoras. – Shahbaz

Respuesta

4

Binary system. Es decir. usted representa 1, 2, 4, 8, 16, y así sucesivamente con 0 o 1 dígito cada uno. El último dígito significa 2^0=1, el segundo dígito significa 2^1=2, el siguiente dígito para 2^2=4, el siguiente para 2^3=8 y así sucesivamente.

Ahora, asocia una acción (lectura/ex/escritura) con cada dígito.

Un hecho más o menos sorprendente es el siguiente: si no tiene solo dos opciones (es decir, si no solo tiene verdadero o falso), pero si tiene más, puede adaptar este patrón a el ternary system. Además, puede adaptar este patrón para cualquier base . El sistema humano funciona para la base 10.

+0

Recibe mi voto positivo, pero realmente debe ampliarlo, por ejemplo, mostrar qué bits están asignados a qué permisos (para usuario, grupo y otro, y también para set-id y bits adhesivos). – derobert

+0

@derobert: La pregunta no era realmente acerca de los permisos de Unix; simplemente fue inspirado por eso. La pregunta es sobre la idea general de representar varios valores booleanos como un entero. –

+0

@AasmundEldhuset: Muy bien, lo leí como más la pregunta de Unix. Supongo que alguna edición puede estar en orden. Además, es posible que desee mencionar que esto no es exclusivo de base-2, por ejemplo, puede codificar 10 elementos como menciona el OP en base-10 (que en realidad es un buen ejemplo, porque todos conocen la base-10) ... (editar: parece que lo hiciste) – derobert

Cuestiones relacionadas