gpt4 book ai didi

c++ - 这段代码的目的是什么?它是在计算位数吗?

转载 作者:行者123 更新时间:2023-11-30 18:30:12 25 4
gpt4 key购买 nike

   if ((16 << (int)(4*((num.length()-2)-i))) == 0)

这是什么意思?是不是有点操纵?如果只计算数字,它可以写得更简单,这就是为什么我认为它可能与我所知道的不同。

最佳答案

<<是左移运算符。左移n与乘以 2 n 相同次。如果移动得足够远,所有设置的位将“落在边缘”,结果将是 0 .

16 << n将变成0如果n > sizeof(int)* BITS_PER_CHAR - 4 .

因此表达式可以写为:

if ((sizeof(int) * BITS_PER_CHAR - 4) < (int)(4*((num.length()-2)-i))

BITS_PER_CHAR在任何 POSIX 兼容系统上为 8。 sizeof(int)*BITS_PER_CHAR通常是32 ,但也可以是其他值。

关于c++ - 这段代码的目的是什么?它是在计算位数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32394150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com