Máscaras de bits

Una máscara de bits son datos para operaciones a nivel de bits. Por ejemplo para el conjunto de los 10 primeros números naturales:

U = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

La máscara que marca los impares es:

M = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]

Mediante la operación NOT sobre la máscara obtenemos los pares:

M = [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]

Dados dos conjuntos, A y B, y dos máscaras A1 y B1, en las que mediante un 0 se expresa que el elemento no pertenece al conjunto y mediante un 1 que sí pertenece, la operación OR (∨) nos proporciona la unión de ambos A ∪ B mientras que AND (∧) la intersección A ∩ B :

A1 = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]

B1 = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]

A1 ∧ B1 = A ∩ B = [0, 0, 0, 0, 1, 0, 1, 0]

A1 ∨ B1 = A ∪ B = [1, 0, 1, 0, 1, 1, 1, 1, 1, 1]

Las máscaras de bits tienen diferentes usos.

Sirven para definir rangos de IPs y ACL

ACL es el acrónimo de listas de control de acceso. En el protocolo TCP/IP las direcciones IP vienen acompañas de su máscara. Si ejecuto ifconfig en mi ordenador aparece la siguiente información:

ifconfig

IP y máscara

Sigue leyendo

Zen, matemáticas y la paradoja de Sorites

Montón de arena o duna o n granos de arena

¿Montón de arena? ¿Duna? ¿N granos de arena?

Hace años leí algunos capítulos de un fragmento de un libro Zen escrito en algún momento entre los siglos XVI y XIX, ya no recuerdo, de la escuela Soto o Rinzai, tampoco lo recuerdo, de un autor que, como probablemente habrás adelantado, tampoco recuerdo, pero sí, era japonés. En definitiva, muy Zen todo. Lo que sí recuerdo bien es un símil realizado con la evolución de un fuego recién empezado con unos leños hasta su consumición completa. ¿En qué momento podemos decir que dejaron de haber leños para haber sólo ceniza? Creo que con este ejemplo el autor quería hacer notar las limitaciones que nuestros conceptos mentales tienen para ayudarnos a entender la realidad.

Bastantes años después he caído, navegando por Internet, en la paradoja de Sorites. Esta paradoja entiendo que quiere hacernos caer en la cuenta de algo muy parecido, poniendo como ejemplo no la combustión de un pequeño fuego sino un montón de arena. Sorites es como se pronuncia en griego σωρείτης palabra que significa montón o cúmulo. La paradoja parte del hecho de que estaremos todos de acuerdo en que:

  1. Dos o tres granos de arena no son un montón.
  2. 100.000 o 1.000.000 sí lo son.
  3. Si dos o tres granos de arena – llamemos n a esos dos o tres – no son un montón, tampoco lo serán n+1
  4. Un montón de n granos no dejará de serlo por quitarle uno (n-1)

Mediante inducción matemática se comprueba que la primera y tercera característica niegan la segunda, es decir, que 100.000 granos (ni un millón) forman un montón.

Llamemos a ser un montón tener la propiedad P. La primera característica nos dice que para n = 1 no existe la propiedad P, y que tampoco existe para n = 2 ni para n = 3. La tercera nos dice que dado que Pn no es un montón tampoco lo será Pn+1 = n+1 Tenemos:

  1. ¬P(1)
  2. ¬P(2)
  3. ¬P(n) ⇒ ¬P(n+1)

Supongamos que hay un número mínimo de granos de arena a partir del cual sí se verifica P, llamaremos m a ese número. Tenemos entonces que m-1 no es un montón y a partir de m granos sí lo es. También sabemos por la característica 1 que m > 1 y por la 3 sabemos que m -1 debe cumplir:

P(m-1) ⇒ P(m -1 + 1)

Es decir, que P(m-1) = P(m) y esto es una contradicción pues hemos impuesto que m es el elemento mínimo a partir del cual tenemos la propiedad P (es un montón) y por debajo de m granos no tenemos esa propiedad.

Por el mismo método de la inducción matemática se demuestra a partir de las características segunda y cuarta de un montón que la primera es falsa, es decir, que tan solo dos o tres granos de arena sí son un montón. Incluso que ningún grano también lo es.

Por lo tanto, no sólo conceptos como la belleza o la armonía son difíciles de definir, sino que identificar conceptos que representan objetos físicos como la madera o la ceniza, incluso los medibles como la gordura o la delgadez (peso), o un montón (número de elementos que lo forman) nos pueden resultar evidentes cuando realmente no lo son.

Las potencias de la unidad imaginaria como clase de equivalencia

El número imaginario i es aquel que permite resolver, entre otras cosas, la ecuación:

i2 = -1

Por lo tanto i = √-1

Podemos ver que sus potencias enteras son:

i0 = 1

i1 = i (= √-1)

i2 = -1

i3 = i * i2 = i * (-1) = -i

i4 = i2 * i2 = -1 * (-1) = 1

i5 = i2 * i3 = -1 * (-i) = i

in = …

Si seguimos la serie vemos que emerge un patrón: 1, i, -1, -i, …

Así como vimos que las congruencias se podían tratar como clases de equivalencia, vemos aquí que las potencias de i se pueden tratar como la clase de equivalencia Z4

Sabemos que Z4 = {[0], [1], [2], [3]} es decir, el total de restos posibles de 4 y sabemos una n potencia de i que pertenece a cada clase:

0 = i0

1 = i1

2 = i2

3 = i3

Con todo esta información no habrá potencia que se nos resista. Si queremos calcular i54 sólo tendremos que calcular el resto de la división de 54 entre 4, que es 2 y por lo tanto pertenece a la misma clase que i2 , por lo que podemos afirmar que i54 = i2 = -1 También podemos afirmar que i54 es congruente con i2 La fórmula general es:

in = i4 mod (n)

Esto también puede enfocarse desde una perspectiva más gráfica. Multiplicar por i es rotar en el plano 90º hacía atrás y multiplicar por -i es avanzar 90º Por más que rotemos siempre acabaremos en uno de los 4 puntos:

El número imaginario en el plano cartesiano complejo

El número imaginario i en el plano cartesiano complejo