[ Anterior | Índice | Seguinte ]

Signed Binary Representations Revisited

Juliana Lai Yeh Lee
Orientador: Routo Terada
Instituto de Matemática e Estatística
Universidade de São Paulo


Conceitos e tecnologias estudadas

Mutual Opposite Form (MOF)

       Mutual Opposite Form (MOF) é um string binário com sinal que satisfaz as seguintes propriedades:

              - Os sinais dos bits adjacentes não nulos (sem considerar os bits nulos) são opostos.

              - O maior bit não nulo e o menor bit não nulo são 1 e -1, respectivamente.

       e é da forma:

d = d[n - 1] 2n-1 + d[n - 2] 2n - 2 + ... + d[1] 21 + d[0] 20

       onde d[i] Є {-1, 0, 1}.

       Para gerar uma representação na forma MOF, é feita a subtração bit-a-bit (2dd), onde d é a representação binária usual e 2d é a representação binária usual deslocada 1 bit para a esquerda. Por exemplo, a representação binária do número 345 é 1 0 1 0 1 1 0 0 1.

       Logo,

d = 1 0 1 0 1 1 0 0 1
e
2d = 1 0 1 0 1 1 0 0 1 "0".

       Assim, temos:

  2d  =  1   0   1   0   1   1    0   0   1   
- d = 1 0 1 0 1 1 0 0 1
1 -1 1 -1 1 0 -1 0 1 -1

       Onde 1 -1 1 -1 1 0 -1 0 1 -1 é a representação MOF do número 345.


       Teorema 1: Seja n um número inteiro positivo. O (n + 1)-bit MOF tem 2n pares de representações diferentes, ou seja, qualquer n-bit de string binário pode ser unicamente representado pelo (n + 1)-bit MOF.

       Demonstração:
              - Para n = 1, temos que o 2-bit MOF é 0|0 ou 1|-1, uma vez que o 1-bit dos strings binários 0 e 1 são convertidos para os MOFs 0|0 e 1|-1, respectivamente:

     0    _                    1    _  
       0                          1    
   --------                   -------
      0 0                       1 -1     

              - Para n = k+1, temos 2 casos:
                     - (k+1)-bit do string binário é 0 → podemos assumir que o (k+2)-bit MOF é 0 e aplicar a conversão um-para-um dos k-bits restantes:

      0 *****   _ 
        0 *****   
   -------------
     0 *******  

                    onde * significa que o dígito pode ser 0 ou 1 (ou -1 para a última linha).

                     - (k+1)-bit do string binário é 1 → o k-bit do string binário pode ser 0 ou 1. Logo, convertemos o (k+1)-bit dos string binários 1|0|* e 1|1|* para o (k+2)-bit MOF 1|-1|* e 1|0|*, respectivamente:

        1  0 ****   _                     1 1 *****   _
         1 0 *****                        1 1 *****
     --------------                     --------------
      1 -1 *******                      1 0 *******

                    onde * significa que o dígito pode ser 0 ou 1 (ou -1 para a última linha).


       Proposição 1: A operação µ = 2d - d converte o string binário para µ-MOF.

       Demonstração:
              - Sabemos que µn = 1 se dn-1 = 1. Por µi = di-1di, temos µi = 0 ou 1 para di = 0. Então, o bit mais a esquerda de µ será 1.

              - De µi = di-1di = 1, sabemos que di-1 = 1 e que µi-1 = di-2di-1 = 0 ou -1, baseado em di-2 = 1 ou 0, respectivamente. Essa relação nos dá, para algum k,

µi | µi-1 | ... | µi-k+1 | µi-k = 1|0|...|0|-1
      (k - 1)


DCC - IME - USP