#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 の先行ゼロをカウントする他の方法はありますか。