0x88

Editar artículo
Este artículo trata sobre un concepto de programación de ajedrez. Para el número, consulte 0x88 (número).

La representación del tablero de ajedrez 0x88 es un método centrado en el cuadrado para representar el tablero de ajedrez utilizado por algunos programas de ajedrez. El número 0x88 es un entero hexadecimal (136 10, 210 8, 10001000 2 ). Las posiciones de rango y archivo están representadas cada una por un nibble (dígito hexadecimal), y los espacios de bits simplifican una serie de cálculos a operaciones bit a bit.

Contenido

Diseño

En la representación del tablero 0x88, el diseño se extiende para cubrir un tablero de 8 por 16, igual al tamaño de dos tableros de ajedrez adyacentes. A cada cuadrado de la matriz de 8 por 16 se le asigna un número, como se puede ver en la tabla de distribución del tablero. En este esquema, cada nibble representa un rango o un archivo, de modo que el entero de 8 bits 0x42 representa el cuadrado en (4,2) en numeración basada en cero, es decir, c5 en notación algebraica estándar.

Sumar 16 a un número para un cuadrado da como resultado el número para el cuadrado una fila arriba, y restar 16 da como resultado el número para el cuadrado una fila abajo. Para pasar de una columna a otra, el número aumenta o disminuye en uno. En notación hexadecimal, las posiciones legales de ajedrez (A1-H8) siempre están por debajo de 0x88. Este diseño simplifica muchos cálculos que los programas de ajedrez necesitan realizar al permitir operaciones bit a bit en lugar de comparaciones.

Diseño de placa 0x88
0x00 (a) 0x01 (b) 0x02 (c) 0x03 (d) 0x04 (e) 0x05 (f) 0x06 (g) 0x07 (h) 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F
0x70 (8) 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
0x60 (7) 60 61 62 63 64 sesenta y cinco 66 67 68 69 6A 6B 6C 6D 6E 6F
0x50 (6) 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
0x40 (5) 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
0x30 (4) 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
0x20 (3) 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
0x10 (2) 10 11 12 13 14 15 dieciséis 17 18 19 1A 1B 1C 1D 1E 1F
0x00 (1) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

Notación y conversión algebraica

Cuadrados en un tablero de ajedrez con notación algebraica Ver también: notación algebraica (ajedrez)

Cada cuadrado de la tablero de ajedrez se identifica por un par único de coordenadas - una carta entre ( a y h ) para el archivo, y un número entre 1 y 8 para el rango. Este método de referirse a cuadrados es parte de la notación algebraica. Para convertir un par de coordenadas en un valor 0x88, los archivos se tratan como números enteros, con un correspondiente a 0 y h correspondiente a 7.

cuadrado 0 × 88=rangodieciséis+(expediente-1)
{\ displaystyle {\ text {cuadrado}} _ {0 \ times 88} = {\ text {rango}} \ cdot 16 + ({\ text {archivo}} - 1)}

Por lo tanto, a 1 corresponde a, con los 8 bits establecidos en, b 2 corresponde a y h 8 corresponde a.

00000000 2
{\ displaystyle 00000000_ {2}} 0
{\ displaystyle 0} 00010001 2
{\ displaystyle 00010001_ {2}} 01110111 2
{\ displaystyle 01110111_ {2}}

Para convertir un valor 0x88 en un par de coordenadas de archivo de clasificación:

expediente= cuadrado 0 × 88 Y 7
{\ displaystyle {\ text {archivo}} = {\ text {cuadrado}} _ {0 \ times 88} \ \ amp; \ 7}
rango=( cuadrado 0 × 88 gt;gt;4)+1
{\ Displaystyle {\ text {rank}} = ({\ text {cuadrado}} _ {0 \ times 88} \ gt;gt; 4) +1}

Aplicaciones

Detección externa

La detección fuera del tablero es una característica de los programas de ajedrez que determina si una pieza está dentro o fuera del tablero de ajedrez legal. En 0x88, el bit más alto de cada nibble representa si una pieza está en el tablero o no. Específicamente, de los 8 bits para representar un cuadrado, el cuarto y el octavo deben ser ambos 0 para que una pieza se ubique dentro del tablero. Esto permite la detección externa mediante operaciones y bit a bit. Si $square AND 0x88(o, en binario, 0b10001000) es distinto de cero, entonces el cuadrado no está en el tablero. Esta operación bit a bit requiere menos recursos informáticos que las comparaciones de enteros. Esto hace que los cálculos, como la detección de movimientos ilegales, sean más rápidos.

Relaciones cuadradas

La diferencia de las coordenadas 0x88 válidas A y B es única con respecto a la distancia y la dirección, lo que no es cierto para las coordenadas de archivo y rango de tres bits empaquetadas clásicas. Eso hace que las búsquedas de distancia de Manhattan, posibles ataques de piezas y movimientos de piezas legales sean más amigables con los recursos. Mientras que las coordenadas cuadradas clásicas en el rango 0–63 requieren tablas de tamaño 4K (64 × 64), la diferencia 0x88 requiere 1/16 o tablas de tamaño 256, o incluso 16 menos.

Se agrega un desplazamiento de 119 (0x77 como el índice cuadrado válido máximo), para hacer ± 119 un rango de 0-238 (un tamaño de 240 por razones de alineación).

0×88Diff = 0×77 + A − B

Adopción

Ver también: Tablero de bits § Tableros de bits de ajedrez

Aunque la representación 0x88 fue inicialmente popular, ha sido reemplazada principalmente por el sistema de bitboards.

Referencias

Trabajos citados

Contactos: mail@wikibrief.org
El contenido está disponible bajo la licencia CC BY-SA 3.0 (a menos que se indique lo contrario).
Índice de letras:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
1
2
3
4
5
6
7
8
9
0