Skip to content
ExamplesEspañolWorkspace →

Base Conversion

Writes a number in binary and hexadecimal.

Level
Advanced
Topic:
Math
Concepts:
Input & output
Mientras
Text
Math
Open in Codoritmo

Run, change and debug this example in your browser.

What you'll learn

With repeated division, MOD gives each digit and Trunc the quotient. ConvertirATexto and Subcadena turn each remainder into its character.

Code

base-conversion.psc · 27 lines
Algoritmo ConversionBases    Definir numero, cociente, resto Como Entero    Definir binario, hexadecimal, digitos Como Caracter    digitos <- "0123456789ABCDEF"    Escribir "Número entero positivo:"    Leer numero    // Divisiones sucesivas: los restos, leídos al revés, forman el número    binario <- ""    cociente <- numero    Mientras cociente > 0 Hacer        binario <- ConvertirATexto(cociente MOD 2) + binario        cociente <- Trunc(cociente / 2)    FinMientras    hexadecimal <- ""    cociente <- numero    Mientras cociente > 0 Hacer        resto <- cociente MOD 16        hexadecimal <- Subcadena(digitos, resto + 1, resto + 1) + hexadecimal        cociente <- Trunc(cociente / 16)    FinMientras    Si numero = 0 Entonces        binario <- "0"        hexadecimal <- "0"    FinSi    Escribir numero, " en binario: ", binario    Escribir numero, " en hexadecimal: ", hexadecimalFinAlgoritmo

Flowchart

Each block in the flowchart matches one instruction in the code.

Algoritmo ConversionBasesSíNoSíNoSíNoAlgoritmo ConversionBasesAlgoritmo ConversionBasesDefinir numero, cociente, resto Como EnteroDefinir numero, cociente,resto Como EnteroDefinir binario, hexadecimal, digitos Como CaracterDefinir binario, hexadecimal,digitos Como Caracterdigitos <- "0123456789ABCDEF"digitos <- "0123456789ABCDEF"Escribir "Número entero positivo:"Escribir "Número enteropositivo:"Leer numeroLeer numerobinario <- ""binario <- ""cociente <- numerocociente <- numeroMientras cociente > 0 Hacercociente > 0binario <- ConvertirATexto(cociente MOD 2) + binariobinario <-ConvertirATexto(cociente MOD2) + binariocociente <- Trunc(cociente / 2)cociente <- Trunc(cociente /2)hexadecimal <- ""hexadecimal <- ""cociente <- numerocociente <- numeroMientras cociente > 0 Hacercociente > 0resto <- cociente MOD 16resto <- cociente MOD 16hexadecimal <- Subcadena(digitos, resto + 1, resto + 1) + hexadecimalhexadecimal <-Subcadena(digitos, resto + 1,resto + 1) + hexadecimalcociente <- Trunc(cociente / 16)cociente <- Trunc(cociente /16)Si numero = 0 Entoncesnumero = 0binario <- "0"binario <- "0"hexadecimal <- "0"hexadecimal <- "0"Escribir numero, " en binario: ", binarioEscribir numero, " en binario:", binarioEscribir numero, " en hexadecimal: ", hexadecimalEscribir numero, " enhexadecimal: ", hexadecimalFinAlgoritmoFinAlgoritmo

Sample run

This is what the program shows when it runs. The answers typed by the user are highlighted.

Número entero positivo:User answer: 20242024 en binario: 111111010002024 en hexadecimal: 7E8

Challenge

Add a conversion to base 8 (octal).

Show hint

Copy the binary block and change the 2 into an 8.

Open in Codoritmo
  • Prime Numbers

    Finds every prime number up to a limit.

    Intermediate
  • GCD and LCM

    Computes the greatest common divisor and the least common multiple.

    Intermediate
  • Caesar Cipher

    Encrypts a message by shifting each letter of the alphabet.

    Advanced