繁体   English   中英

从十进制转换为二进制并返回位集时出现问题

[英]Problem when converting from decimal to binary and returning a bitset

我有一个奇怪的问题。 我创建了一个简单的函数,可以将十进制转换为二进制。 该参数是一个int值,它以十进制表示数字,并且该函数返回一个代表二进制数的位集。

问题是,对于小于10000000000000000000000000000000二进制数(十进制为2147483648)的二进制数,转换可以正常工作,但是当要转换的数字较高时,转换将无法正常进行。 错误在哪里???

在这里,我向您发送功能:

bitset<15000> Utilities::getDecToBin(int dec)
{
    bitset<15000> columnID; 
 int x;
    for(x=0;x<columnID.size();x++)
    {
       columnID[x]=dec%2;
       dec=dec/2;
    }

    return columnID;
}

预先感谢您的所有帮助! :D

32位int的范围是-2,147,483,648至2,147,483,647。

如果您的意思是1073741825,那么我看不到任何错误。

如果要在最重要的位置(即2147483648)增加一点,则可能会遇到签名/未签名的问题。

我看到您通过columnID的大小来限制循环。 最好也以dec的大小(以位为单位)限制它,或者在dec为0时停止它。

令人惊讶的是,它最多只能使用30位,您应该能够管理31位,但是对于32位,则需要无符号整数。 如果您使用无符号的64位整数,则可以管理的内容更多,但是15,000位整数只能通过特殊的类来实现。

您应该使用一个long int ,数组long int ,甚至一个string输入到你的方法(具体取决于数据的来源以及如何将调用函数上)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM