Segunda, 9 de Dezembro de 2024




 Cálculo de Dígito Verificador

O Dígito Verificador é um mecanismo que garante a validade e integridade de um número, protegendo-o principalmente contra digitações erradas.

Consiste basicamente de um ou mais dígitos acrescentados ao número principal (tornando-se parte deste), calculado através de rotina apropriada.

É usado normalmente em representações numéricas que exijam integridade, tais como documentos de identificação (CPF, CNPJ, PIS, RG, etc), códigos de pagamentos (Boleto de cobrança, Código de concessionária pública, etc), Códigos Identificadores (Agência, Conta-Corrente, Número de Matrícula, etc), etc.

O método de cálculo desses dígitos varia conforme o caso, porém muitos deles se baseiam em duas rotinas típicas: A Módulo 11 e a Módulo 10.

Abaixo temos uma explicação do cálculo dessas duas rotinas:

Módulo 11:

Conforme o esquema abaixo, cada dígito do número, começando da direita para a esquerda (menos significativo para o mais significativo) é multiplicado, na ordem, por 2, depois 3, depois 4 e assim sucessivamente, até o limite de multiplicação escolhido. Aí novamente multiplica-se o número por 2, 3, etc.

    Número exemplo: 261533-9

    +---+---+---+---+---+---+   +---+
    | 2 | 6 | 1 | 5 | 3 | 3 | - | 9 |
    +---+---+---+---+---+---+   +---+
      |   |   |   |   |   |
     x7  x6  x5  x4  x3  x2
      |   |   |   |   |   |
    =14 =36  =5 =20  =9  =6
      +---+---+---+---+---+-> =90 x10, /11 =81, resto 9 => DV = 9
A somatória dessas multiplicações é multiplicada por 10 e dividida por 11. O resto desta divisão (módulo 11) é o dígito verificador. Apenas o dígito menos significativo é utilizado.

Quando o número for alfanumérico utiliza-se o código ASC do dígito entrante menos 48 (código ASC do número zero). Desta forma os números "0" a "9" continuam entrando no cálculo como 0 a 9 e as letras de "A" a "Z" entrarão no cálculo como 17 a 42.

Em outro método de cálculo a somatória das multiplicações não é multiplicada por 10. Simplesmente é dividida por 11. Só que neste caso o resto pode ser 10. Se isso acontece o dígito será "X".

Esse é o exemplo da rotina padrão de módulo 11 disponível em Soluções e Utilitários.

Módulo 10:

Conforme o esquema abaixo, cada dígito do número, começando da direita para a esquerda (menos significativo para o mais significativo) é multiplicado, na ordem, por 2, depois 1, depois 2, depois 1 e assim sucessivamente.

    Número exemplo: 261533-4

    +---+---+---+---+---+---+   +---+
    | 2 | 6 | 1 | 5 | 3 | 3 | - | 4 |
    +---+---+---+---+---+---+   +---+
      |   |   |   |   |   |
     x1  x2  x1  x2  x1  x2
      |   |   |   |   |   |
     =2 =12  =1 =10  =3  =6
      +---+---+---+---+---+-> =16 /10 =1, resto 6 => DV = (10 - 6) = 4
Ao invés de ser feita a somatória das multiplicações, será feita a somatória dos dígitos das multiplicações (se uma multiplicação der 12, por exemplo, será somado 1 + 2 = 3).

A somatória será dividida por 10 e se o resto (módulo 10) for diferente de zero, o dígito será 10 menos este valor.

Note que estas condições finais poderão ser alteradas conforme o caso. Esse é o exemplo da rotina padrão de módulo 10 disponível em Soluções.


Nota do autor:

O texto desta publicação foi originalmente concebido em 2001 neste site.
A versão existente na Wikipedia foi baseada nesta publicação e não o contrário.


¤ Links Relacionados:
- Soluções
- Utilitários


Gostou?   Compartilhe ou comente:


Nome:
Email:

Comentário:


7 comentários:

Danilo Calixto
11 meses atrás
Muito útil mesmo, estava já a uns dias procurando como encontrar o dígito verificador de um protocolo de transmissão de uma Declaração de Importação, e eis que aqui encontrei a solução.

Muito obrigado.


Silvano Dos Santos Moreno
7 anos atrás
Muito útil, esse dispositivo poderia fazer parte do kit de qualquer banco/bancário

Zita Sudré
7 anos atrás
OK. Muito interessante!!!!

Claudio Antunes
7 anos atrás
gostei valeu

Rai Dias
9 anos atrás
Muito bom. Consegui calcular o dígito verificador de uma conta corrente que estava faltando pra fazer uma tranferência.

Chirley Abagnale
12 anos atrás
Adoreiiii

Patricia Maria Polis
13 anos atrás
simplesmente magnifico