C++ - 变量中的 3 个可能值?

标签 c++ variables

我需要存储一个30个字母的组合,但每个字母只能是“0”、“1”或“2”。当我使用 sizeof(myString) 时,它返回 32。

我想使用这个 30 个字母的组合来访问数组的一行,所以我想知道是否可以使用某种类型的 3 值 bool 来存储 3 个值中的 1 个。

最佳答案

3^30 = 205891132094649 (~2E14),小于 64 位整数的最大值 (~2E19),因此您可以将字符串以 1:1 的方式映射到 64 位整数。

一个明显的方法是将您的字符串视为以 3 为基数的数字,这样转换起来会很慢。将其视为基数 4 会快得多,然后可以完全通过位移(无模数除法/乘法)完成转换,这是可能的,因为 4^30 仍然小于 2^64。

关于C++ - 变量中的 3 个可能值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2936165/

相关文章:

c++ - std::unordered_set 如何避免迭代中每个元素上潜在的页面错误?

JavaScript 不使用其他 JS 文件中的变量

javascript - 如何在循环中越来越多地更改变量名称

头文件 LNK2019 中的 C++ API 实现

c++ - Windows Mobile/Pocket PC : How do I change the border color of focused/unfocused CEdit, MFC 或 Win32 中的 CListCntl、CButton

c++ - 如何更改 DirectX 9 中的屏幕分辨率

javascript - 传递给函数的变量不工作 JavaScript

variables - TypeScript 'let' 变量和异步调用

php - 在 javascript 文件错误中使用 php var

c++ - 无法在 64 位 Vista 上运行使用 MinGW Dev-C++ 编译的 C 程序