c# - ASP.NET和php的位移运算结果不一致
本文介绍了c# - ASP.NET和php的位移运算结果不一致的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
我本人是PHP程序员,对ASP.NET不懂,现在因为有一个ASP.NET项目需要转换成PHP实现,但是里面有些方法实现两种语言结果不一致,下面是实例:
PHP代码
echo ((852 >> 24) << 24); //输出结果为:852
ASP.NET
Console.WriteLine("{0}", ((852 << 24) >> 24));//输出结果为84
希望同时懂这两种语言的大神帮忙解答一下,不胜感激,谢谢
解决方案
(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
的值就不是原来的值了
这篇关于c# - ASP.NET和php的位移运算结果不一致的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文