我正在尝试编写一个程序来解决 ACM 问题,它必须非常快。解决该问题的一种数学上快速的方法是使用按位计算。但是,我正在使用 python,并且无法在位级别执行这些计算。问题是:
- 计算位中 1 和 0 的数量。例如,我们如何计算二进制数字 100010 有两个 1 和四个 0。我能想象的唯一方法是将其转换为字符串并计算它们。但是这种转换首先抵消了在位级别工作所获得的所有速度。
- 如何将描述二进制数字(例如“100101”)的字符串输入表示为Python中的实际二进制数字?目前我有一个将位转换为整数的函数,并对整数执行按位运算。
- 有位数据类型吗?那就是我可以将输入作为位而不是字符串或整数接收吗?
我确实考虑过在 C++ 中编写诸如 bitSet 之类的类,但我感觉这也不会很快。PS 我正在使用的二进制数字可能高达 1000 位,我可能必须使用 1000 个这样的二进制数字,因此效率至关重要。