標準関数の乱数の最大値を表現するのに必要なビット数
RAND_MAXを表現するときに必要なビット数を4ビット単位で。
セットされている最上位ビットの位置を見るのでもいいかもしれないがシンプルに。
#include <stdio.h> #include <stdlib.h> int main(void) { int i, n = 0; for (i = RAND_MAX; i != 0; i /= 16) n++; printf("%d %d\n", RAND_MAX, n); return 0; }
WindowsXP+MinGW+msvcrtでは、
32767 4
Ubuntu+glibcでは、
2147483647 8