Base 36 - Base 36

A base 36 é um sistema numérico posicional usando 36 como base . A escolha de 36 é conveniente porque os dígitos podem ser representados usando os algarismos arábicos de 0 a 9 e as letras latinas de A a Z (o alfabeto latino básico do ISO ). A Base 36 é, portanto, o sistema numérico alfanumérico mais compacto que não diferencia maiúsculas de minúsculas usando caracteres ASCII , embora sua economia de radix seja pobre. Embora este artigo use letras maiúsculas, na prática, letras minúsculas costumam ser usadas para evitar confusão entre números que se parecem com letras maiúsculas, por exemplo '0O', '1I', '2Z', '5S', '6G', e '8B'.

Do ponto de vista matemático , 36, como acontece com todos os números altamente compostos , é uma escolha conveniente para uma base, pois é divisível por 2 e 3, e por seus múltiplos 4, 6, 9, 12 e 18. Além disso, uma vez que o o número um a menos que a base é o produto dos próximos dois maiores primos (5 e 7), ele pode se aproximar bem de muitas frações para seu tamanho. Os números da base 36 também podem ser representados em duas mãos usando a contagem do dedo senário , visto que cada dígito da base 36 pode ser representado com dois dígitos do senário (base 6).

O nome latinado mais comum para a base 36 parece ser hexatridecimal , embora sexatrigesimal seja indiscutivelmente mais correto. A forma intermediária hexatrigesimal também é usada algumas vezes. Para obter mais informações sobre essa confusão de nomenclatura, consulte a entrada para hexadecimal . Outro nome ocasionalmente visto para a base 36 é alfadecimal , um neologismo cunhado com base no fato de que o sistema usa os dígitos decimais e as letras da aposta alfa latina .

Exemplos

Tabela de conversão:
× 1 2 3 4 5 6 7 8 9 UMA B C D E F G H eu J K eu M N O P Q R S T você V C X Y Z 10
1 1 2 3 4 5 6 7 8 9 UMA B C D E F G H eu J K eu M N O P Q R S T você V C X Y Z 10
2 2 4 6 8 UMA C E G eu K M O Q S você C Y 10 12 14 16 18 1A 1C 1E 1G 1I 1K 1M 1O 1Q 1S 1U 1W 1Y 20
3 3 6 9 C F eu eu O R você X 10 13 16 19 1C 1F 1I 1L 1O 1R 1U 1X 20 23 26 29 2C 2F 2I 2L 2O 2R 2U 2X 30
4 4 8 C G K O S C 10 14 18 1C 1G 1K 1O 1S 1W 20 24 28 2C 2G 2K 2O 2S 2W 30 34 38 3C 3G 3K 3O 3S 3W 40
5 5 UMA F K P você Z 14 19 1E 1J 1O 1T 1Y 23 28 2D 2I 2N 2S 2X 32 37 3C 3H 3M 3R 3W 41 46 4B 4G 4L 4Q 4V 50
6 6 C eu O você 10 16 1C 1I 1O 1U 20 26 2C 2I 2O 2U 30 36 3C 3I 3O 3U 40 46 4C 4I 4O 4U 50 56 5C 5I 5O 5U 60
7 7 E eu S Z 16 1D 1K 1R 1Y 25 2C 2J 2Q 2X 34 3B 3I 3P 3W 43 4A 4h 4O 4V 52 59 5G 5N 5U 61 68 6F 6M 6T 70
8 8 G O C 14 1C 1K 1S 20 28 2G 2O 2W 34 3C 3K 3S 40 48 4G 4O 4W 54 5C 5K 5S 60 68 6G 6O 6W 74 7C 7K 7S 80
9 9 eu R 10 19 1I 1R 20 29 2I 2R 30 39 3I 3R 40 49 4I 4R 50 59 5I 5R 60 69 6I 6R 70 79 7I 7R 80 89 8I 8R 90
UMA UMA K você 14 1E 1O 1Y 28 2I 2S 32 3C 3M 3W 46 4G 4Q 50 5A 5K 5U 64 6E 6O 6Y 78 7I 7S 82 8C 8M 8W 96 9G 9Q A0
B B M X 18 1J 1U 25 2G 2R 32 3D 3O 3Z 4A 4L 4W 57 5I 5T 64 6F 6Q 71 7C 7N 7Y 89 8K 8V 96 9h 9S A3 AE AP B0
C C O 10 1C 1O 20 2C 2O 30 3C 3O 40 4C 4O 50 5C 5O 60 6C 6O 70 7C 7O 80 8C 8O 90 9C 9O A0 AC AO B0 AC BO C0
D D Q 13 1G 1T 26 2J 2W 39 3M 3Z 4C 4P 52 5F 5S 65 6I 6V 78 7L 7Y 8B 8O 91 9E 9R A4 AH AU B7 BK BX CA CN D0
E E S 16 1K 1Y 2C 2Q 34 3I 3W 4A 4O 52 5G 5U 68 6M 70 7E 7S 86 8K 8 anos 9C 9Q A4 AI AW BA BO C2 CG CU D8 DM E0
F F você 19 1O 23 2I 2X 3C 3R 46 4L 50 5F 5U 69 6O 73 7I 7X 8C 8R 96 9L A0 AF AU B9 BO C3 CI CX DC DR E6 EL F0
G G C 1C 1S 28 2O 34 3K 40 4G 4W 5C 5S 68 6O 74 7K 80 8G 8W 9C 9S A8 AO B4 BK C0 CG CW DC DS E8 EO F4 FK G0
H H Y 1F 1W 2D 2U 3B 3S 49 4Q 57 5O 65 6M 73 7K 81 8I 8Z 9G 9X AE AV AC BT CA CR D8 DP E6 EN F4 FL G2 GJ H0
eu eu 10 1I 20 2I 30 3I 40 4I 50 5I 60 6I 70 7I 80 8I 90 9I A0 AI B0 BI C0 CI D0 DI E0 EI F0 FI G0 GI H0 OI I0
J J 12 1L 24 2N 36 3P 48 4R 5A 5T 6C 6V 7E 7X 8G 8Z 9I A1 AK B3 BM C5 CO D7 DQ E9 ES FB FU GD GW HF HY IH J0
K K 14 1O 28 2S 3C 3W 4G 50 5K 64 6O 78 7S 8C 8W 9G A0 AK B4 BO C8 CS DC DW POR EXEMPLO F0 FK G4 VAI H8 HS IC IW JG K0
eu eu 16 1R 2C 2X 3I 43 4O 59 5U 6F 70 7L 86 8R 9C 9X AI B3 BO C9 CU DF E0 EL F6 FR GC GX OI I3 IO J9 JU KF L0
M M 18 1U 2G 32 3O 4A 4W 5I 64 6Q 7C 7Y 8K 96 9S AE B0 BM C8 CU DG E2 EO FA FW GI H4 HQ IC IY JK K6 KS LE M0
N N 1A 1X 2K 37 3U 4h 54 5R 6E 71 7O 8B 8 anos 9L A8 AV BI C5 CS DF E2 EP FC FZ GM H9 HW EU J J6 JT KG L3 LQ MD N0
O O 1C 20 2O 3C 40 4O 5C 60 6O 7C 80 8O 9C A0 AO AC C0 CO DC E0 EO FC G0 VAI HC I0 IO JC K0 KO LC M0 MO NC O0
P P 1E 23 2S 3H 46 4V 5K 69 6Y 7N 8C 91 9Q AF B4 BT CI D7 DW EL FA FZ VAI HD I2 IR JG K5 KU LJ M8 MX NM OB P0
Q Q 1G 26 2W 3M 4C 52 5S 6I 78 7Y 8O 9E A4 AU BK CA D0 DQ POR EXEMPLO F6 FW GM HC I2 É JI K8 KY LO EU N4 NU OK PA Q0
R R 1I 29 30 3R 4I 59 60 6R 7I 89 90 9R AI B9 C0 CR DI E9 F0 FR GI H9 I0 IR JI K9 L0 LR MI N9 O0 OU PI Q9 R0
S S 1K 2C 34 3W 4O 5G 68 70 7S 8K 9C A4 AW BO CG D8 E0 ES FK GC H4 HW IO JG K8 L0 LS MK NC O4 OW PO QG R8 S0
T T 1M 2F 38 41 4U 5N 6G 79 82 8V 9O AH BA C3 CW DP EI FB G4 GX HQ EU J JC K5 KY LR MK WL O6 OZ PS QL S7 T0
você você 1O 2I 3C 46 50 5U 6O 7I 8C 96 A0 AU BO CI DC E6 F0 FU VAI OI IC J6 K0 KU LO MI NC O6 P0 PU QO RI SC T6 U0
V V 1Q 2L 3G 4B 56 61 6W 7R 8M 9h AC B7 C2 CX DS EN FI GD H8 I3 IY JT KO LJ EU N9 O4 OZ PU QP RK SF TA U5 V0
C C 1S 2O 3K 4G 5C 68 74 80 8W 9S AO BK CG DC E8 F4 G0 GW HS IO JK KG LC M8 N4 O0 OW PS QO RK SG TC U8 V4 W0
X X 1U 2R 3O 4L 5I 6F 7C 89 96 A3 B0 BX CU DR EO FL GI HF IC J9 K6 L3 M0 MX NU OU PO QL RI SF TC U9 V6 W3 X0
Y Y 1W 2U 3S 4Q 5O 6M 7K 8I 9G AE AC CA D8 E6 F4 G2 H0 HY IW JU KS LQ MO NM OK PI QG SC TA U8 V6 W4 X2 Y0
Z Z 1Y 2X 3W 4V 5U 6T 7S 8R 9Q AP BO CN DM EL FK GJ OI IH JG KF LE MD NC OB PA Q9 R8 S7 T6 U5 V4 W3 X2 Y1 Z0
10 10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 G0 H0 I0 J0 K0 L0 M0 N0 O0 P0 Q0 R0 S0 T0 U0 V0 W0 X0 Y0 Z0 100
Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Base 6 0 1 2 3 4 5 10 11 12 13 14 15 20 21 22 23 24 25
Base 36 0 1 2 3 4 5 6 7 8 9 UMA B C D E F G H
 
Decimal 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
Base 6 30 31 32 33 34 35 40 41 42 43 44 45 50 51 52 53 54 55
Base 36 eu J K eu M N O P Q R S T você V C X Y Z

Alguns números em decimal, base 6 e base 36:

Decimal Base 6 Base 36
1 1 1
10 14 UMA
100 244 2S
1.000 4344 RS
10.000 11 4144 7PS
100.000 205 0544 255S
1.000.000 3323 3344 LFLS
1.000.000.000 2431 2124 5344 GJDGXS
1.000.000.000.000 2043 2210 1030 1344 CRE66I9S
Base 6 Base 36 Decimal
1 1 1
100 10 36
1 0000 100 1.296
100 0000 1000 46.656
1 0000 0000 10.000 1.679.616
100 0000 0000 100000 60.466.176
1 0000 0000 0000 1000000 2.176.782.336
100 0000 0000 0000 10000000 78.364.164.096
1 0000 0000 0000 0000 100000000 2.821.109.907.456
52 3032 3041 2221 3014 WIKIPEDIA 91.730.738.691.298
Fração Decimal Base 6 Base 36
1/2 0,5 0,3 0 . eu
1/3 0. 3 0,2 0 . C
1/4 0,25 0,13 0 . 9
1/5 0,2 0. 1 0 . 7
1/6 0,1 6 0,1 0 . 6
1/7 0. 142857 0. 05 0 . 5
1/8 0,125 0,043 0 . 4I
1/9 0. 1 0,04 0 . 4
1/10 0,1 0,0 3 0 . 3 L
1/11 0. 09 0. 0313452421 0 . 39TGD
1/12 0,08 3 0,03 0 . 3

Conversão

Os inteiros de 32 e 64 bits armazenam apenas até 6 ou 13 dígitos de base 36, respectivamente. Por exemplo, o valor máximo inteiro assinado de 64 bits de " 9223372036854775807 " é " 1Y2P0IJ32E8E7 " na base-36. Para números com mais dígitos, pode-se usar as funções mpz_set_str e mpz_get_str na biblioteca matemática de precisão arbitrária GMP . Para números de ponto flutuante, as funções correspondentes são chamadas mpf_set_str e mpf_get_str .

Implementação C

static char *base36enc(long unsigned int value)
{
	char base36[37] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	/* log(2**64) / log(36) = 12.38 => max 13 char + '\0' */
	char buffer[14];
	unsigned int offset = sizeof(buffer);

	buffer[--offset] = '\0';
	do {
		buffer[--offset] = base36[value % 36];
	} while (value /= 36);

	return strdup(&buffer[offset]); // warning: this must be free-d by the user
}

static long unsigned int base36dec(const char *text)
{
	return strtoul(text, NULL, 36);
}

Implementação Visual Basic

Public Function ConvertBase10(ByVal d As Double, ByVal sNewBaseDigits As String) As String
    ' call using ConvertBase10(12345, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ") for base36
    ' can be used to convert to any base
    ' from http://www.freevbcode.com/ShowCode.asp?ID=6604

    Dim S As String, tmp As Double, i As Integer, lastI As Integer
    Dim BaseSize As Integer
    BaseSize = Len(sNewBaseDigits)
    Do While Val(d) <> 0
        tmp = d
        i = 0
        Do While tmp >= BaseSize
            i = i + 1
            tmp = tmp / BaseSize
        Loop
        If i <> lastI - 1 And lastI <> 0 Then S = S & String(lastI - i - 1, Left(sNewBaseDigits, 1)) 'get the zero digits inside the number
        tmp = Int(tmp) 'truncate decimals
        S = S + Mid(sNewBaseDigits, tmp + 1, 1)
        d = d - tmp * (BaseSize ^ i)
        lastI = i
    Loop
    S = S & String(i, Left(sNewBaseDigits, 1)) 'get the zero digits at the end of the number
    ConvertBase10 = S
End Function

Usos na prática

  • O protocolo de imagem remota para sistemas de BBS usava notação de base 36 para transmitir as coordenadas de forma compacta.
  • Muitos sistemas de redirecionamento de URL , como TinyURL ou SnipURL / Snipr, também usam números inteiros de base 36 como identificadores alfanuméricos compactos.
  • Geohash-36 , um algoritmo de codificação de coordenadas, usa raiz 36, mas usa uma mistura de letras maiúsculas e minúsculas do alfabeto para evitar vogais, números que parecem vogais e outras confusões de caracteres.
  • Vários sistemas, como o RickDate, usam a base 36 como uma representação compacta das datas gregorianas em nomes de arquivos, usando um dígito cada para o dia e o mês.
  • A Dell usa um número base 36 de 5 ou 7 dígitos (etiqueta de serviço) como uma versão compacta de seus códigos de serviço expresso.
  • O pacote de software SalesLogix usa a base 36 como parte de seus identificadores de banco de dados.
  • O site TreasuryDirect , que permite aos indivíduos comprar e resgatar títulos diretamente do Departamento do Tesouro dos Estados Unidos em formato eletrônico sem papel, serializa as compras de títulos em uma conta usando um número de base 36 de 4 dígitos. No entanto, as letras latinas de A a Z são usadas antes dos algarismos arábicos de 0 a 9, de modo que as compras são listadas como AAAA, AAAB ... AAAZ, AAA0, AAA1 ... AAA9, AABA ...
  • O programa cliente de e-mail PMMail codifica a hora UNIX de chegada do e-mail e a usa para os seis primeiros caracteres do nome do arquivo da mensagem.
  • O MediaWiki armazena arquivos carregados em diretórios com nomes derivados da representação de base 36 da soma de verificação de um arquivo carregado.
  • Siteswap , um tipo de notação de malabarismo, frequentemente emprega 0–9 e a – z para significar o tempo de permanência de um lançamento (que pode ser considerado aproximadamente a altura do lançamento). Jogadas mais altas do que 'z' podem ser feitas, mas nenhuma notação tem aceitação generalizada para essas jogadas.
  • Em identificadores de títulos SEDOL , o dígito de verificação é calculado a partir de uma soma ponderada dos primeiros seis caracteres, cada caractere interpretado na base-36.
  • No International Securities Identification Number (ISIN), o dígito de verificação é calculado primeiro tomando o valor de cada caractere na base 36, concatenando os números juntos e, em seguida, fazendo uma soma ponderada.
  • Reddit usa base-36 para identificar postagens e comentários.
  • O CabMD usa a base 36 para identificar reivindicações do OHIP para o Ministério da Saúde e Cuidados de Longo Prazo

Referências

links externos