CountBitsCntSameAsSignBit
产 品 支 持 情 况
| 产 品 | 是 否 支 持 |
|---|---|
Ascend 950PR/Ascend 950DT | √ |
Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品 | √ |
Atlas A2 训 练 系 列 产 品/Atlas A2 推 理 系 列 产 品 | √ |
Atlas 200I/500 A2 推 理 产 品 | x |
Atlas 推 理 系 列 产 品AI Core | √ |
Atlas 推 理 系 列 产 品Vector Core | x |
Atlas 训 练 系 列 产 品 | x |
Kirin X90 | √ |
Kirin 9030 | √ |
功 能 说 明
头 文 件 路 径 为:"basic_api/kernel_operator_scalar_intf.h"。
统 计int64_t类 型 数 值 的 二 进 制 表 示 中,从 最 高 数 值 位 开 始 与 符 号 位 相 同 的 连 续 比 特 位 的 个 数。
以 如 下CountBitsCntSameAsSignBit调 用 为 例:
C++
int64_t valueOut = AscendC::CountBitsCntSameAsSignBit(0x0100000000000020ULL); // 返 回6
其 计 算 结 果 如 下 图 所 示:
图 1 CountBitsCntSameAsSignBit计 算 示 意 图

函 数 原 型
C++
__aicore__ inline int64_t CountBitsCntSameAsSignBit(int64_t valueIn)
参 数 说 明
表 1 参 数 说 明
| 参 数 名 称 | 输 入/输 出 | 描 述 |
|---|---|---|
| valueIn | 输 入 | 被 统 计 的 二 进 制 数 字。 |
返 回 值 说 明
返 回 从 最 高 数 值 位 开 始 与 符 号 位 相 同 的 连 续 比 特 位 的 个 数。
约 束 说 明
当 输 入 是-1(比 特 位 全1)或 者0(比 特 位 全0)时,返 回-1。
调 用 示 例
C++
int64_t valueOut;
int64_t valueIn = 0; // 二 进 制 表 示 全 为0
valueOut = AscendC::CountBitsCntSameAsSignBit(valueIn); // 返 回-1
valueIn = 0xFFFFFFFFFFFFFFFFLL; // -1, 二 进 制 表 示 全 为1
valueOut = AscendC::CountBitsCntSameAsSignBit(valueIn); // 返 回-1
valueIn = 0x7FFFFFFFFFFFFFFFLL; // 正 数 最 大 值
valueOut = AscendC::CountBitsCntSameAsSignBit(valueIn); // 返 回0
valueIn = 0x8000000000000000LL; // 负 数 最 小 值
valueOut = AscendC::CountBitsCntSameAsSignBit(valueIn); // 返 回0
valueIn = 1;
valueOut = AscendC::CountBitsCntSameAsSignBit(valueIn); // 返 回62
valueIn = 0x00F0000000000000LL;
valueOut = AscendC::CountBitsCntSameAsSignBit(valueIn); // 返 回7