【发布时间】:2015-04-25 11:39:43
【问题描述】:
问题
- 有没有办法使用 c/c++ 创建任意大小的整数?
例如:
int main(void) {
Int i = Int(3); //3-bit integer
i = 1; //Represented as: 001
}
奖金
- 有没有办法对浮点值做同样的事情?
【问题讨论】:
-
你可以写一个类来做这个。
-
不是单独的,而是作为结构或类的一部分:bit field
-
如果您尝试在任意大小的浮点类中执行
1/3,您将遇到堆栈溢出! -
在这里查看任意大小的小整数:stackoverflow.com/questions/11815894/…,如果您对节省内存感兴趣(位打包会带来小的性能损失)。对于比标准类型更大的类型,您最好使用一些库。
-
仅供参考,有一个 C23 提案(open-std.org/jtc1/sc22/wg14/www/docs/n2709.pdf“为 N 位整数添加基本类型”)通过
_BitInt(3)添加它们。如果获得批准,这可能是未来的另一个答案。