アカウント名:
パスワード:
4294967295 はプログラマには馴染みがある数字です.-1を2の補数で表現すると32bit環境では4294967295になるからです
たとえばC言語で sizeof(int)が4bytesな環境だと
int a = 4294967295;printf("%d\n", a);
とか
printf("%d\n", atoi("4294967295"));
のようなコードは -1 を出力します.
つまりメモリ上に 4bytesのデータ 0xffffffff をおいてそれを符号なし32bit整数で読むと 4294967295 ですが型指定のミスなどで符号なし整数として読んでしまうと -1 に化けてしまいます
カッコいい解説に野暮ですが、符号付き整数がオーバーフローしたら、未定義。
> カッコいい解説に野暮ですが、符号付き整数がオーバーフローしたら、未定義。
オーバーフローじゃないですよ
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日本発のオープンソースソフトウェアは42件 -- ある官僚
4294967295 (スコア:0)
まあ、rootをID0として-1および設定最大値のIDに特殊な権限を与えるって発想は頷けるが、そんなに沢山のユーザがいることを想定しているのかな。不思議な数字だ。
Re: (スコア:1)
4294967295 はプログラマには馴染みがある数字です.
-1を2の補数で表現すると32bit環境では4294967295になるからです
たとえばC言語で sizeof(int)が4bytesな環境だと
int a = 4294967295;
printf("%d\n", a);
とか
printf("%d\n", atoi("4294967295"));
のようなコードは -1 を出力します.
つまりメモリ上に 4bytesのデータ 0xffffffff をおいて
それを符号なし32bit整数で読むと 4294967295 ですが
型指定のミスなどで符号なし整数として読んでしまうと -1 に化けてしまいます
Re: (スコア:0)
カッコいい解説に野暮ですが、符号付き整数がオーバーフローしたら、未定義。
Re:4294967295 (スコア:0)
> カッコいい解説に野暮ですが、符号付き整数がオーバーフローしたら、未定義。
オーバーフローじゃないですよ