240.5.5_1 Sa tastature učitati dva binarna broja. Izračunati i ispisati sumu u binarnom brojnom sistemu.

Opis rješenja:

Opis programa:

Listing programa:

package zadatak;
import java.util.Scanner;
public class P250240551 {

        // provjera da li su sve cifre 0 ili 1- binaran broj
        while (a1 != 0 && a2 != 0 ) { // ponavljaj sve dok ne provjeris sve cifre oba broja
        	// I broj
        	cif1 = a1 % 10; // izdvoji cifru sa desne strane
            a1 = a1 / 10; // odbaci cifru sa desne strane - slijedeće izdvajanje
            if (cif1 != 0 && cif1 != 1) { // ako cifra nije ni 0 ni 1 - novo učitvanje
                System.out.print("ucitaj prvi binaran broj: ");
                br1 = input.nextInt(); // novi broj
                a1 = br1; // nova vrijednost pomoćne varijable
            } // if
                
             // II broj
               	cif2 = a2 % 10; // izdvoji cifru sa desne strane
                a2 = a2 / 10; // odbaci cifru sa desne strane - slijedeće izdvajanje
                if (cif2 != 0 && cif2 != 1) { // ako cifra nije ni 0 ni 1 - novo učitvanje
                    System.out.print("ucitaj drugi binaran broj: ");
                    br2 = input.nextInt(); // novi broj
                    a2 = br2; // nova vrijednost pomoćne varijable
            } // if
        } // while
            
        // sabiranje vrijdnosti za svaku cifru
        a1 = br1;      // nova vrijednost pomoćne varijable
        a2 = br2;      // nova vrijednost pomoćne varijable
        while (a1 != 0 || a2 != 0 ) { // ponavljaj sve dok ne provjeris sve cifre oba broja
           cif1 = a1 % 10;   // izdvoji cifru sa desne strane  I broj
            a1 = a1 / 10;     // odbaci cifru sa desne strane - slijedeće izdvajanje  II broj
            
            cif2 = a2 % 10;   // izdvoji cifru sa desne strane II broj
            a2 = a2 / 10;     // odbaci cifru sa desne strane - slijedeće izdvajanje II broj 
                      
            sum = cif1 + cif2 + prenos; // suma dvije cifre i prethodnog prenosa         
            switch (sum) {
            case 0: case 1:		// sum < 2 = sum  ostaje, prenos 0  
                prenos = 0;		// prenos 1
                break;
           case 2:
                sum = 0; 		// sum 2 = 10 
                prenos = 1;		// prenos 1
                break;
            case 3:
                sum = 1; 		// sum 3 = 11 ==> 1  1 
                prenos = 1;		// prenos 1
                break;
            } // switch            		
            
            s = s + sum * p;    // saberi novu cifru uvećanu za koeficijen sa starom sumom
            p = p * 10;          // uvečaj koeficijen za 10 - p*10
        } // while
        
        s = s + prenos * p;    // ako ima prenos sabrace slijedeći koeficijent

        System.out.println(br1 + " + " + br2 + " = " + s);
    }    
}

Ispis na ekranu:
Sabiranje dva binarna broja
Ucitaj prvi binaran broj: 1111
Ucitaj drugi binaran broj: 1011
1111 + 1011 = 11010

Index