Почему sum1 = sum1 + (charnumber [a] * Math.pow (2, b)) выходит странно? - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь преобразовать число в двоичной системе в десятичную систему. Я добавил распечатки для мониторинга переменных. Когда я ввел 10 как число:

сумма до = 0.0

сумма после = 48.0

результат степени = 1

b =0

a = 1

.

.

Когда я ввожу 101 в качестве числа

сумма = 0,0 до

результат мощности = 1,0 мощность

сумма = 49,0 после

b = 0

a = 2

.

сумма = 49,0 до

результат степени = 2,0

сумма = 145,0 после

b = 1

a = 1

сумма = 145,0

.

сумма = 145,0 до

результат мощности 4,0

сумма = 341,0 после

b =2

a = 0

sum = 341.0

import java.util.Scanner;

public class Binarium{

    public static void main(String[] args){

        Scanner scan = new Scanner(System.in);
        System.out.println("What is the number?(Only up to ten digits)");
        String number = scan.nextLine();
        System.out.println("What is your conversion");  //d2b b2d 
        String convers = scan.nextLine();
        scan.close();     


    char[] charnumber = number.toCharArray();
    int intnumber = Integer.parseInt(number);
         int a = charnumber.length -1 ;
         double sum1 = 0;
         int b = 0; 
         for (;a>0;a--){
            System.out.println(sum1+"before");
            sum1 = sum1+(charnumber[a]*Math.pow(2, b));
            System.out.println(Math.pow(2, b)+"power");
            System.out.println(sum1+"after");
            System.out.println(b);
            System.out.println(a);
            b= b+1;     
         if(b==4){
             b=0;
         }
         else;

         }System.out.println(sum1);
    }
}

В чем проблема с суммами?

1 Ответ

0 голосов
/ 10 ноября 2019

На днях я решил задачу, которая преобразовывает двоичный код в десятичный, он прост и может помочь вам:

public static void main(String[] args) {
        // TODO Auto-generated method stub
        //int[] b = {1, 0, 1, 1};

        //using list because the kata is using it: 
        List<Integer> b = new ArrayList();
        b.add(0);
        b.add(0);
        b.add(0);
        b.add(0);
        b.add(1);

        //first thing first i need to remember the formulat: 
        //0101 = 0*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 0+4+0+1 = 5
        int r = 0; //result
        int hB = b.size() - 1; // high order bit 
        for(int i = 0; i < b.size(); i++)
        {
            r+= b.get(i)* Math.pow(2, hB);

            hB--;
        }
        System.out.println(r);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...