在java中存储和使用超过32位的数字!

发布于 2024-10-19 20:16:15 字数 756 浏览 3 评论 0原文

我想问一下,在这段代码中如何使用超过32位的数字,该代码应该将两个超过32位的二进制数相乘,甚至long也不起作用,而且我不知道应该如何使用BigInteger在这段代码中!谁能帮忙,谢谢

public static void main(String [] args)
{
    long a , b ;
    Scanner scanner = new Scanner (System.in); 
    a = scanner.nextLong();
    b = scanner.nextLong() ;
    long sumA = 0 ;
    long sumB = 0 ;
    double i = 0;
    while ( a != 0 || b != 0)
    {

        sumA += (a % 10) * Math.pow( 2.0 , i ) ;
        sumB += (b % 10) * Math.pow( 2.0 , i ) ;
        a /= 10 ; 
        b /= 10 ;
        i++ ;
    }
    a = sumA ;
    b = sumB ;
    long c = a * b ;
    long temp = 0 ;
    for (int k = 0 ; c!=0 ; k++)
    {
        temp +=( Math.pow(10.0, k) * (c % 2) ); 
        c /= 2 ;
    }
    System.out.println(temp) ;
}

I wanted to ask about , how can I use numbers with more than 32 digits in this code , the code is supposed to multiply two binary numbers with more than 32 digits , and even long wont work , and I dont know how should I use BigInteger in this code ! can anyone help , thanks

public static void main(String [] args)
{
    long a , b ;
    Scanner scanner = new Scanner (System.in); 
    a = scanner.nextLong();
    b = scanner.nextLong() ;
    long sumA = 0 ;
    long sumB = 0 ;
    double i = 0;
    while ( a != 0 || b != 0)
    {

        sumA += (a % 10) * Math.pow( 2.0 , i ) ;
        sumB += (b % 10) * Math.pow( 2.0 , i ) ;
        a /= 10 ; 
        b /= 10 ;
        i++ ;
    }
    a = sumA ;
    b = sumB ;
    long c = a * b ;
    long temp = 0 ;
    for (int k = 0 ; c!=0 ; k++)
    {
        temp +=( Math.pow(10.0, k) * (c % 2) ); 
        c /= 2 ;
    }
    System.out.println(temp) ;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文