Logo

dev-resources.site

for different kinds of informations.

Como saber e validar o dígito verificador do RG (Registro Geral)

Published at
3/31/2022
Categories
self
rg
Author
shadowlik
Categories
2 categories in total
self
open
rg
open
Author
9 person written this
shadowlik
open
Como saber e validar o dígito verificador do RG (Registro Geral)

O RG (Registro Geral), ou cédula de identidade, carteira de identidade, identidade é o nosso documento nacional de identificação civil no Brasil. Os dados que constam nesse documento variam de acordo com o órgão responsável pela sua emissão bem como a sua regra matemática de autenticidade. Nesse artigo vamos demonstrar a regra e validação baseado em um documento emitido pela SSP-SP.

O dígito verificador , nada mais é que o dígito que vem após o traço (xx.xxx.xxx- d ). Ele é um mecanismo de autenticação utilizado para verificar a validade e a autenticidade do um valor numérico, funciona como uma prevenção de fraudes ou possíveis erros de transmissão e geração do documento.

Como calcular o dígito verificador do RG

Para aprender a lógica por trás da geração do dígito verificador utilizaremos neste artigo um RG válido e gerado randomicamente: 39.406.714-?

Primeiro vamos fazer uma tabela com 3 linhas e 8 colunas, teremos na primeira linha os 8 primeiros algarismos do número do RG.

| 3 | 9 | 4 | 0 | 6 | 7 | 1 | 4 |
| | | | | | | | |
| | | | | | | | |

Agora precisamos preencher a segunda linha, ela sempre obedecerá uma sequência lógica de números para todos o cálculo de qualquer RG. A sequência é 2,3,4,5,6,7,8 e 9.

| 3 | 9 | 4 | 0 | 6 | 7 | 1 | 4 |
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| | | | | | | | |

Agora para obter os valores da terceira linha devemos multiplicar os números de cada linha por coluna. Por exemplo, 3×2, 9×3 e assim por diante.

| 3 | 9 | 4 | 0 | 6 | 7 | 1 | 4 |
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 6 | 27 | 16 | 0 | 36 | 49 | 8 | 36 |

Agora que temos nossa tabela completa, precisamos somar todos os números obtidos na terceira linha. Em nosso exemplo teremos: 6 + 27 + 16 + 0 + 36 + 49 + 8 + 36 = 178.

Agora precisamos descobrir o resto da divisão desse número por 11, você pode descobrir usando a calculador do seu computador usando o operador mod : 178 mod 11 = 2.

Agora precisamos subtrair de 11 o resto da nossa divisão e teremos finalmente o nosso dígito verificador: 11 – 2 = 9.

Abaixo você encontra o algoritmo feito em JavaScript ES5 seguindo a lógica explicada acima.



function descobrirDigito(rg) {
var digitos = rg.split("");
var totais = [];
var total = 0;

// Multiplicamos os que seriam da primeira linha com os da segunda    
digitos.forEach(function (digito, index) {
    totais.push(Number(digito) * (2 + index));
});

// Multiplicamos as colunas
totais.forEach(function(numero) { total += numero });

// Descobrimos o resto da divisão
var resto = total % 11;

return 11 - resto;
Enter fullscreen mode Exit fullscreen mode

}

console.log(descobrirDigito("39406714"));

Enter fullscreen mode Exit fullscreen mode




Casos especiais

Como tudo no Brasil, temos alguns casos especiais que precisamos estar atentos:

O dígito verificador do RG é X

Quando nos deparamos com o dígito verificador X , isso significa que o resultado da última etapa de nossa conta é 10 (11 – 1). Então o dígito verificador 10 foi substituído pelo algarismo romano X.

O dígito verificador é 0

Qundo nos deparamos com o dígito verificador 0 , isso significa que o resultado da última etapa de nossa conta é 11 (11 – 0). Então o dígito verificador 11 foi substituído pelo algarismo 0.

O post Como saber e validar o dígito verificador do RG (Registro Geral) apareceu primeiro em Henrique Marques Fernandes.

self Article's
30 articles in total
Favicon
Self hosted supabase setup with Authelia and Caddy
Favicon
Microsoft Certification Courses
Favicon
Hello World!
Favicon
Embracing Self-Care: Your Path to Wellness
Favicon
self, Self, and Self.self in Swift
Favicon
Day 14: Rust's Symphony of Generics and Traits – Crafting Code for the Real World 🌐🚀
Favicon
Day 13: Rust Enums – Unleashing the Power of Variants! 💪🦀
Favicon
Day 12: Navigating the Rustic Terrain of Struct Methods 🏞️
Favicon
Day 10: Rustic Riddles - Unleashing the Number Guessing Game 🎲
Favicon
Day 7: Unleashing Functions in Rust 🚀
Favicon
Day 5: Mastering Rust's Conditionals and Match Expressions
Favicon
Mindful Practices that help me get out of my own head and my way
Favicon
What Weightlifting Has Taught Me About Systems Engineering
Favicon
The Mindset Shift that Transform My Long-Term Outlook
Favicon
Embracing the Power of Being Second
Favicon
The 9-to-5 Scholar: Completing MIT OCW CSE with a Full time Job
Favicon
2022 retro, and what's up
Favicon
Find Prime Number in C++
Favicon
Top 6 Sites para Encontrar, Gerar, Criar e Compartilhar Memes
Favicon
Day-2 of Machine Learning
Favicon
The worst piece of life advice I ever received
Favicon
Como saber e validar o dígito verificador do RG (Registro Geral)
Favicon
Como descobrir qual a espécie de planta por foto?
Favicon
Orientação a objetos baseada em protótipos parte 2
Favicon
Top ways to become a self taught developer
Favicon
Why Polywork?
Favicon
Become a better front-end developer
Favicon
"Sophie's World in Ruby"
Favicon
Melhores Sites para Encontrar Estágios do Brasil
Favicon
Melhores Sites de Emprego do Brasil

Featured ones: