ASP.NET和php的位移运算结果不一致

我本人是PHP程序员,对ASP.NET不懂,现在因为有一个ASP.NET项目需要转换成PHP实现,但是里面有些方法实现两种语言结果不一致,下面是实例:

PHP代码

echo ((852 >> 24) << 24); //输出结果为:852

ASP.NET

Console.WriteLine("{0}", ((852 << 24) >> 24));//输出结果为84

希望同时懂这两种语言的大神帮忙解答一下,不胜感激,谢谢

阅读 3k
1 个回答

(852 >> 24) << 24 怎么都是 0, 这里我猜是笔误,应该是 (852 << 24) >> 24

这个应该跟精度有关

PHP 中 852 << 24 的结果是 14294188032
JS 中(因为懒得开 C# 环境,所以用 JS,结果也是 84),852 << 24 结果是 1409286144

注意 PHP 的结果比 JS 的结果多一位。我猜 PHP 是按 64 位来计算的,C#/JS 是按 32 位来计算的,<< 24 的时候溢出,所以 >> 24 的值就不是原来的值了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题