gpt4 book ai didi

objective-c - 是否有特定的objective-c 方法来计算整数中的位数

转载 作者:行者123 更新时间:2023-12-04 02:23:23 24 4
gpt4 key购买 nike

我想在objective-c中计算我的32位整数中设置为1的位。某些语言将其作为单个调用:

  • Java 有 Integer.bitCount()
  • C++ 有时有 __popcount()
  • SQL 有 BIT_COUNT()

  • Objective-C 是否有等价物?否则我会使用:
    -(int32_t) BitCounter:(int32_t) v
    {
    v = v - ((v >> 1) & 0x55555555);
    v = (v & 0x33333333) + ((v >> 2) & 0x33333333);
    return (((v + (v >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
    }

    ...这很好,但有些处理器将它作为处理器内置的单个命令,自然我想利用它,因为它处于时间关键循环中。

    最佳答案

    gcc、clang 等人有 __builtin_popcount ,这是一个 C 内置函数,可以从 Objective-C 调用:

    -(int32_t) BitCounter:(int32_t) v
    {
    return __builtin_popcount(v);
    }

    在带有 SSE 4.2 的现代 x86 平台上,这应该编译为一条指令( POPCNT )。

    关于objective-c - 是否有特定的objective-c 方法来计算整数中的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25747885/

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