98 lines
4.8 KiB
HTML
98 lines
4.8 KiB
HTML
<html>
|
|
|
|
<!--
|
|
Nome: Mario
|
|
Cognome: Montanari
|
|
Classe: 3AIN
|
|
-->
|
|
|
|
<head>
|
|
<link rel="icon" href="itisnullobaldiniravenna.jpg" />
|
|
<link rel="stylesheet" href="styleConversioneDecimaleBinario.css" />
|
|
<title>Conversione da decimale a binario</title>
|
|
</head>
|
|
<body>
|
|
<h1>Numero in Base 10:</h1>
|
|
<input type="text" id="numeroDecimale" placeholder="Inserisci un numero decimale tra 0 e 255"/></br>
|
|
<label for="C2">Complemento a 2</label>
|
|
<input type="checkbox" id="C2" onchange="aggiornaPlaceholder()" /></br>
|
|
<button onclick="conversioneBinario()">Converti in Base 2</button></br></br>
|
|
<input id="numeroBinario" disabled />
|
|
<script>
|
|
|
|
// FUNZIONE CHE CONTROLLA LO STATO DEL CHECK
|
|
function testCheck() {
|
|
if (document.getElementById("C2").checked) {
|
|
document.getElementById("numeroBinario").innerHTML = "SI";
|
|
} else {
|
|
document.getElementById("numeroBinario").innerHTML = "NO";
|
|
}
|
|
}
|
|
|
|
// FUNZIONE CHE AGGIORNA IL PLACEHOLDER DELL'INPUT IN BASE ALLO STATO DEL CHECK
|
|
function aggiornaPlaceholder() {
|
|
if (document.getElementById("C2").checked) { // SE VIENE CLICCATO IL CHECKBOX
|
|
document.getElementById("numeroDecimale").placeholder = "Inserisci un numero decimale tra -128 e 127" // IL PLACEHOLDER DELLA BARRA DI INPUT CAMBIA
|
|
} else { // ALTRIMENTI, SE NON VIENE CLICCATO IL CHECKBOX
|
|
document.getElementById("numeroDecimale").placeholder = "Inserisci un numero decimale tra 0 e 255"; // RIMANE IL PLACEHOLDER ORIGINALE DELLA BARRA DI INPUT
|
|
}
|
|
}
|
|
|
|
// FUNZIONE CHE CALCOLA IL NUMERO IN BASE BINARIA
|
|
function conversioneBinario() {
|
|
let numeroDecimale = document.getElementById("numeroDecimale").value; // INIZIALIZZAZIONE DELLA VARIBILE numeroDecimale(.value perché prende il valore da un tag <input>)
|
|
let numeroBinario = ""; // INIZIALIZZAZIONE DELLA VARIABILE numeroBinario (stringa vuota)
|
|
|
|
|
|
if (numeroDecimale !== "") { // SE VIENE IMMESSO UN NUMERO (e periò non è una stringa vuota)
|
|
if (document.getElementById("C2").checked) { // SE IL CHECKBOX VIENE CLICCATO
|
|
if (numeroDecimale >= -128 && numeroDecimale <= 127) { // E SE IL NUMERO IMMESSO E' COMPRESO TRA -128 E 127
|
|
|
|
if (numeroDecimale < "0") { // SE IL NUMERO IMMESSO E' MINORE DI 0
|
|
numeroDecimale = 256 + Number(numeroDecimale); // AGGIUNGO 256 (2 elavato alla 8) AL VALORE DECIMALE NEGATIVO, essendo che dobbiamo rappresentare numeri binari in 8 bit
|
|
}
|
|
|
|
// POI CONVERTI IL NUMERO DECIMALE IN BINARIO
|
|
while (numeroDecimale > "0") {
|
|
numeroBinario = (numeroDecimale % 2) + numeroBinario; // PRENDO IL RESTO DELLA DIVISIONE PER 2 DEL NUMERO DECIMALE IMMESSO (che sarà 0 o 1) E LO AGGIUNGO ALL'INIZIO DELLA STGINGA numeroBinario
|
|
numeroDecimale = Math.floor(numeroDecimale / 2); // DIVIDO PER DUE IL NUMERO DECIMALE IMMESSO E LO ARROTONDO SEMPRE PER DIFETTO
|
|
}
|
|
|
|
numeroBinario = numeroBinario.padStart(8, "0"); // RITORNO IL numeroBinario E AGGIUNGO DEGLI 0 ALLA STRINGA numeroBinario
|
|
|
|
} else { // ALTRIMENTI, SE IL NUMERO SFORA L'INTERVALLO -128 - 127
|
|
window.alert("Numero non valido! Inserisci un numero compreso tra -128 e 127."); // MOSTRA UNA FINESTRA DI ALLERTA
|
|
}
|
|
|
|
} else { // SE IL CHECKBOX NON VIENE CLICCATO
|
|
if (numeroDecimale >= 0 && numeroDecimale <= 255) { // E SE IL NUMERO IMMESSO E' COMPRESO TRA 0 E 255
|
|
|
|
if (numeroDecimale === 0) { // SE IL NUMERO IMMESSO E' UGUALE A 0
|
|
numeroBinario = "0"; // ALLORA RITORNA COME numeroBinario IL NUMERO 0
|
|
} else { // ALTRIMENTI, SE IL NUMERO IMMESSO E' COMPRESO NELL'INTERVALLO 0 - 255, MA NON E' UGUALE A 0
|
|
|
|
// CONVERTI IL NUMERO DECIMALE NEGATIVO IN BINARIO
|
|
while (numeroDecimale > 0) {
|
|
numeroBinario = (numeroDecimale % 2) + numeroBinario; // PRENDO IL RESTO DELLA DIVISIONE PER 2 DEL NUMERO DECIMALE IMMESSO (che sarà 0 o 1) E LO AGGIUNGO ALL'INIZIO DELLA STGINGA numeroBinario
|
|
numeroDecimale = Math.floor(numeroDecimale / 2); // DIVIDO PER DUE IL NUMERO DECIMALE IMMESSO E LO ARROTONDO SEMPRE PER DIFETTO
|
|
}
|
|
|
|
}
|
|
|
|
numeroBinario = numeroBinario.padStart(8, "0"); // RITORNO IL numeroBinario E AGGIUNGO DEGLI 0 ALLA STRINGA numeroBinario
|
|
|
|
} else { // SE IL NUMERO IMMESSO SFORA L'INTERVALLO 0 - 255
|
|
window.alert("Numero non valido! Inserisci un numero compreso tra 0 e 255."); // MOSTRA UNA FINESTRA DI ALLERTA
|
|
}
|
|
}
|
|
} else if (numeroDecimale === "") { // ALTRIMENTI, SE NON VIENE IMMESSO NESSUN NUMERO (e periò è una stringa vuota)
|
|
window.alert("Inserisci un numero!"); // MOSTRA UNA FINESTRA DI ALLERTA
|
|
}
|
|
|
|
document.getElementById("numeroBinario").value = numeroBinario; // RITORNA IN OUTPUT IN RISULTATO DEL NUMERO BINARIO (.value perché prende il valore da un tag <input>)
|
|
|
|
}
|
|
|
|
</script>
|
|
</body>
|
|
</html> |