Ternário Balanceado

"Setun computer using Balanced Ternary system"

Este é um sistema numérico não padronizado, mas ainda assim posicional. Sua característica é que os dígitos podem ter um dos valores: -1, 0 e 1. No entanto, sua base ainda é 3 (porque existem três valores possíveis). Como não é conveniente escrever -1 como dígito, usaremos a letra Z. Se você acha que é um sistema bastante estranho - veja a foto - aqui está um dos computadores que ainda o utiliza.

Então, aqui estão alguns primeiros números escritos em ternário balanceado:

    0    0
    1    1
    2    1Z
    3    10
    4    11
    5    1ZZ
    6    1Z0
    7    1Z1
    8    10Z
    9    100

Este sistema permite que você escreva valores negativos sem sinal de menos: você pode simplesmente inverter dígitos em qualquer número positivo.

    -1   Z
    -2   Z1
    -3   Z0
    -4   ZZ
    -5   Z11

Observe que um número negativo começa com Z e positivo com 1.

Algoritmo de Conversão

É fácil representar um determinado número em ternário balanceado via representação temporária no sistema de números ternários normal. Quando o valor está no ternário padrão, seus dígitos são 0 ou 1 ou 2. Iterando do dígito mais baixo, podemos pular com segurança 0s e1s, no entanto,2s devem ser transformados em Zs com a adição de 1 ao próximo dígito. Dígitos 3 devem ser transformados em 0 nos mesmos termos - esses dígitos não estão presentes no número inicialmente, mas podem ser encontrados após o aumento de 2s.

Exemplo 1: Converteremos 64 em um ternário balanceado. Inicialmente, usamos o ternário normal para reescrever o número:

$$ 64_{10} = 02101_{3} $$

Vamos processá-lo a partir do dígito mais à direita:

O resultado final é 1Z101.

Vamos convertê-lo novamente no sistema decimal, adicionando os valores posicionais ponderados: $$ 1Z101 = 81 \cdot 1 + 27 \cdot (-1) + 9 \cdot 1 + 3 \cdot 0 + 1 \cdot 1 = 64_{10} $$

Exemplo 2: Vamos converter 237 em ternário balanceado. Inicialmente, usamos o ternário normal para reescrever o número:

$$ 237_{10} = 22210_{3} $$

Vamos processá-lo a partir do dígito mais à direita:

O resultado final é 100Z10.

Vamos convertê-lo novamente no sistema decimal, adicionando os valores posicionais ponderados: $$ 100Z10 = 243 \cdot 1 + 81 \cdot 0 + 27 \cdot 0 + 9 \cdot (-1) + 3 \cdot 1 + 1 \cdot 0 = 237_{10} $$

Problemas