$Global:Bin="" Function Dec2Bin([Int32]$Num) { If ($Num -lt 0) {Return "Número a converter deve ser positivo"} If ($Num -lt 2) {Return (($Global:Bin+=$Num)|%{-join $_[$_.Length..0]})} $Global:Bin += ($Num % 2) If ($Num -eq 2) {Return (($Global:Bin+=1)|%{-join $_[$_.Length..0]})} Return Dec2Bin ([math]::Truncate($Num/2)) } Clear-Host [Int32]$Dec = Read-Host "Insira um número para converter em binário" Write-Host "O equivalente em binário de $Dec é:" (Dec2Bin $Dec)
Sabemos que uma maneira de ser realizada a conversão é através dos restos sucessivos da divisão por 2. Por exemplo, na conversão do número 19.
Se bem observarmos na implementação proposta, são utilizadas chamadas recursivas à função Dec2Bin. Ainda (usando uma função recursiva), os valores de resto são empilhados em uma variável global do tipo String. Assim sendo, no teste de parada da recursividade, efetuamos uma inversão da pilha, ou seja, da String que armazena os restos.
Se colocarmos como entrada o número 19 no script, o resultado será:
Insira um número para converter em binário: 19 O equivalente em binário de 19 é: 10011
Nenhum comentário:
Postar um comentário