作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一名学习 C++ 的初学者(自学)程序员,最近我决定实现一个二进制编码的十进制 (BCD) 类作为练习,这样我就可以在 Project Euler 上处理非常大的数字。 .我想尽可能从根本上做到这一点,从头开始。
我开始使用一个整数数组,其中输入数字的每个数字都保存为一个单独的整数。我知道每个 BCD 数字只能用 4 位编码,所以我认为为此使用整个 int 有点矫枉过正。我现在正在使用 bitset<4> 的数组。
编辑:这样做的主要原因是作为练习——我不想使用像 GMP 这样的库,因为重点是自己制作类(class)。有没有办法确保每个十进制数字只使用 4 位?
最佳答案
只有一个音符,使用 bitset<4>
的数组的将需要与长数组相同的空间量。 bitset 通常通过将一个字大小的整数数组作为位的后备存储来实现,因此按位操作可以使用按位字操作,而不是字节操作,因此一次可以完成更多操作。
另外,我怀疑你的动机。 BCD 通常用作在系统之间发送数字串时的压缩表示。通常与算术没有任何关系。你真正想要的是一个任意大小的整数算术库,比如 GMP .
关于c++ - 如何最好地将 BCD 作为一项练习来实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/450561/
我是一名优秀的程序员,十分优秀!