【发布时间】:2020-05-14 09:46:21
【问题描述】:
我正在编写一个类来处理带有更多位 unsigned long long 的位集的整数。
#include <bitset>
#include <string>
#define MAX_BITS 32000
class RossInt {
std::bitset<MAX_BITS> bits;
public:
RossInt(unsigned long long num); /* Copies the bits of num into the bitset */
RossInt operator+ (const RossInt& op) const;
std::string to_string() const; /* Returns the number in decimal in a string */
};
由于数字大于unsigned long long,我将其放入字符串中,但问题是我无法使用通常用于decimal_n += pow(2, bit_index) 的方式,因为我无法存储结果变成一个变量,我想尽可能少地使用外部库。
有没有办法使用按位运算符或任何其他方式进行转换?
【问题讨论】:
-
欢迎来到 Stack Overflow。请花点时间浏览The Tour 并参考Help Center 的材料,了解您可以在这里询问什么以及如何询问。发布minimal reproducible example 特别重要。
-
我们只能咨询水晶球,了解您的 “比 long long int 更大的新 int 类型。” 是什么——而现在不是工作得很好。请提供A Minimal, Complete, and Verifiable Example (MCVE)。
-
您是否看过任何大整数实现(例如,Boost's Integer Types)?
-
不,我想创建自己的整数。这更像是一种锻炼,而不是我工作中真正需要的东西
-
我相信您的问题可以使用更好的标题和更好的介绍(摆脱介绍您的大整数实现)。例如:“如何打印由
std::bitset表示的、太大而无法放入unsigned long long的十进制值?”。不过,我认为这是一个很好的问题。
标签: c++ converters