Ошибка в подсчете начальных нулей __int128_t

#include <iostream>
#include <stdint.h>
using namespace std;
typedef __int128_t int128_t;
int main() {
  int128_t y = 0;
  cout<<__builtin_clzll(static_cast<unsigned long long>(y>>64)) <<endl;
  cout<<__builtin_clzll(static_cast<unsigned long long>(0)) <<endl;
}

выход: 63 64

gcc версия 5.3.0 20151204

почему результаты неверны? Есть ли другой способ подсчитать ведущие нули int128_t.

0 ответов

Другие вопросы по тегам