我本人是PHP程序员,对ASP.NET不懂,现在因为有一个ASP.NET项目需要转换成PHP实现,但是里面有些方法实现两种语言结果不一致,下面是实例:
PHP代码
echo ((852 >> 24) << 24); //输出结果为:852
ASP.NET
Console.WriteLine("{0}", ((852 << 24) >> 24));//输出结果为84
希望同时懂这两种语言的大神帮忙解答一下,不胜感激,谢谢
我本人是PHP程序员,对ASP.NET不懂,现在因为有一个ASP.NET项目需要转换成PHP实现,但是里面有些方法实现两种语言结果不一致,下面是实例:
PHP代码
echo ((852 >> 24) << 24); //输出结果为:852
ASP.NET
Console.WriteLine("{0}", ((852 << 24) >> 24));//输出结果为84
希望同时懂这两种语言的大神帮忙解答一下,不胜感激,谢谢
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答726 阅读✓ 已解决
2 回答2.3k 阅读
1 回答689 阅读✓ 已解决
(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
的值就不是原来的值了