3

これを試したとき

~1099511627520

32bit OS ではマイナスですが 64bit は OK~ ではどうすれば 32bit OS で動くようになりますか?</p>

誰でも私を助けることができますか?ありがとう〜

4

2 に答える 2

3

BC Math 関数を使用すると、次のように 32 ビット マシンで 64 ビット数値のビット単位の否定を取得できます。

<?php

define('MAX_UINT_64', '18446744073709551615');

$number_64bit = '1099511627520';

$negate_64bit = bcsub(MAX_UINT_64, $number_64bit, 0);

var_dump($negate_64bit);

?>

以下を出力します。

18446742974197924095

于 2013-02-21T08:01:20.697 に答える
0

bcmath 関数を使用してみてください。

function neg($number)
    {
    return bcsub(0, bcadd($number, 1));
    }

echo neg('1099511627520') . PHP_EOL; // -1099511627521
echo ~1099511627520 . PHP_EOL; // -1099511627521

echo neg('1') . PHP_EOL; // -2
echo ~1 . PHP_EOL; // -2

echo neg('-1099511627520') . PHP_EOL; // 1099511627519
echo ~-1099511627520 . PHP_EOL; // 1099511627519

echo neg('-1') . PHP_EOL; // 0
echo ~-1 . PHP_EOL; // 0
于 2013-02-21T07:35:46.387 に答える