32 ビット システムでは左シフトでオーバーフローしますが、64 ビット システムではオーバーフローしません。32 ビットの左シフトの結果は 64 ビット システムで保持できますか?

WBOY
リリース: 2016-06-23 13:46:44
オリジナル
1455 人が閲覧しました

echo 83661<<15;//32系统结果:-1553563648
ログイン後にコピー


echo 83661<<15;//64系统结果:2741403648
ログイン後にコピー


64 ビット システムで 32 のオーバーフロー結果を保持したいのですが、どうすればよいでしょうか。教えてください。


ディスカッションへの返信 (解決策)

$n = 83661<<15;printf("有符号:%d 无符号:%u 二进制:%032b", $n, $n, $n);
ログイン後にコピー
ログイン後にコピー

署名付き: -1553563648 署名なし: 2741403648 バイナリ: 10100011011001101000000000000000

$n = 83661<<15;printf("有符号:%d 无符号:%u 二进制:%032b", $n, $n, $n);
ログイン後にコピー
ログイン後にコピー

署名付き: -1553563648 署名なし: 2741403648 バイナリ: 10100011011001101000000000000000



Big こんにちは、実行しました64マシン上で。
リーリー

分からないの?
同じものです

分かりませんか?
これらは同じものです



すごいですね、合格できますか
$n = 83661<<15;
64 ビット マシンでこの値を取得します: -1553563648

$n = 83661<<15;printf("%d",$n);//结果还是2741403648
ログイン後にコピー
-1553563648

echo  2741403648 - 0x100000000;
ログイン後にコピー
-1553563648



ありがとう、私の問題は解決しました。
変位の問題にはあまり詳しくないので、この知識をブラッシュアップする必要があります。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート