「L」を使用した場合と使用しない場合で乗算結果が異なるのはなぜですか?
Java では、「L」を使用すると乗算演算で異なる結果が生成されます。いずれかのオペランドの接尾辞。
正しい Long 値を表すために "L" を追加します
"L" を追加すると、結果が Long 値になります。整数を乗算すると、結果も整数になります。結果が整数の範囲 (2147483647 ~ -2147483648) を超える場合、オーバーフローして負の値になります。
式の 365 に "L" を追加することで、long 値であることを明示的に指定します。これにより、他の整数と乗算した結果が Long 値になり、整数の範囲に切り捨てられなくなります。
「L」なし: 不正な整数の結果
「L」なしで整数を乗算すると、結果は整数になります。結果が整数の範囲を超える場合、「ラップアラウンド」して別の値になります。
たとえば、乗算 1000606024365 は " を追加しません。 L" は、誤った結果 1471228928 を返します。これは、結果 31536000000 が整数の範囲をオーバーフローし、-1702967296 (31536000000 の 2 の補数表現) になるためです。
バイナリ表現
2 つの結果のバイナリ表現は違いを示しています:
「L」を追加しないと、最上位 4 ビットが切り捨てられ、誤った表現になります。 10010110000000000、
その他の考慮事項
以上がJava の乗算で 1 つのオペランドに「L」を追加すると結果が変わるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。