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

查看:94
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆