此代码的目的是什么?它是在计算位数吗?
what's the purpose of this code? is it counting number of digits?
if ((16 << (int)(4*((num.length()-2)-i))) == 0)
这是什么意思?这是不是有点操纵?如果它只计算数字,它可以写得更简单,这就是为什么我认为它可能与我所知道的不同。
<<
为左移运算符。左移一个n
等于乘以2 n
乘以。如果你移动得足够远,所有的设置位都将"跌落到边缘",结果将是0
。
如果n > sizeof(int)* BITS_PER_CHAR - 4
, 16 << n
将变成0
。
所以表达式可以写成
if ((sizeof(int) * BITS_PER_CHAR - 4) < (int)(4*((num.length()-2)-i))
BITS_PER_CHAR
在任何posix兼容的系统上都是8。sizeof(int)*BITS_PER_CHAR
通常是32
,也可以是其他值
相关文章:
- 我的字符计数代码计算错误.为什么
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 计算两个代码块的时间复杂度
- 计算出有多少客户端可以连接到我正在使用的一些tcp服务器代码
- 如果代码包含多个复杂度循环,如何计算复杂度
- 在实现合并排序代码时无法计算所有反转
- 如何在数组类型的模板代码中计算std::size_t
- 为什么这两个相似的代码计算行列式的结果不同?
- 根据计算机上安装的库依赖项编译不同的代码
- 此代码如何计算数字的奇偶校验?
- 代码的最优解,以便它可以执行高达 10^18 的计算
- 交叉和计算,任何人都可以解释代码吗?
- 使用额外的变量使计算更容易理解 - (多少)我减慢了代码的速度?
- 计算代码块的 O 表示法
- 计算代码行数
- 如何计算C++代码段的 CPU 周期成本
- 如何更快地计算代码
- 我如何改进这个GPA计算代码
- 在高度优化的代码中计算代码运行时