游戏官网
论坛首页
设为首页
收藏本站
开启辅助访问
礼包
勋章
任务
登录
找回密码
注册通行证
梦幻论坛
礼包中心
头像框
攻略站
视频站
淘专辑
DIY你自己的内容专辑
论坛任务
客服专区
高级搜索
AI你所想
AI绘画专区
经脉模拟器
游戏题库
发帖际遇
开发历程
梦幻杂谈
技术攻略
武神坛
梦幻互通版
梦幻口袋版
BUG与问题报告
藏宝阁
新手上路
玩家真人秀
天南地北
群雄逐鹿
论坛家族
视频站
梦幻图文
梦幻杂谈
技术攻略
新手上路
武神坛
梦幻互通版
梦幻自走棋
藏宝阁
活动专版
开发历程
每周维护
BUG与问题报告
玩家真人秀
天南地北
群雄逐鹿
视频站
梦幻同人
论坛积分详解
贡献度介绍
精华申请
官方玩法说明资料库
论坛工具箱
开服合服查询
维护公告汇总查询
维护解读汇总查询
消费明细查询
CBG支付限额查询
神器合集
论坛指引
烟花集锦
制图教程
安全四格
被盗问题反馈
被骗问题反馈
精华申请
《梦幻西游》电脑版官方论坛
»
梦幻论坛
›
《梦幻西游》电脑版综合讨论区
›
梦幻杂谈
›
历史留存
›
█►知识贴◄█对死后血量爆发上亿的解释
1
2
3
4
5
/ 5 页
下一页
返回列表
查看:
3227
|
回复:
72
█►知识贴◄█对死后血量爆发上亿的解释
[复制链接]
相思の笨笨
相思の笨笨
当前离线
积分
2095
今日未签到
电梯直达
楼主
发表于 2007-10-22 17:09:07
|
只看该作者
|
倒序浏览
|
阅读模式
来自:山东
大家好
先请大家看这个帖子:
http://xyq.netease.com/viewthread.php?tid=429731&extra=&page=1
我是这个帖子的11楼 前2次回复中 我粗略解释了下这种现象的原因
今天 从2进制数字的角度 给出全面解释
(如果你很忙 看红字就够了)
一.理论是很强大的
首先我们学习下二进制数字的表示.
1.二进制数字是用0和1表示某个数字的一种方法.二进制是计算技术中广泛采用的一种数制。二进制数是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。二进制数也是采用位置计数法,其位权是以2为底的幂。比如,1的二进制是1 2的二进制是10 3的二进制是101...
具体请参考BAIDU以及计算机入门教材
2.随着计算机的发展 由于涉及到了负数 普通的二进制已经不能满足人们的需求 所以 现在计算机普遍使用的是补码
关于补码 下面给出网上的一段很好的解释:
在计算机系统中,数值一律用补码来表示(存储)。
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补
码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
补码与原码的转换过程几乎是相同的。
数值的补码表示也分两种情况:
(1)正数的补码:与原码相同。
例如,+9的补码是00001001。
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码
0000111按位取反为1111000;再加1,所以-7的补码是11111001。
已知一个数的补码,求原码的操作分两种情况:
(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取
反,然后再整个数加1。
例如,已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负
数,所以该位不变,仍为“1”;其余7位1111001取反后为0000110;再加1,所以是10000111。
二.具体问题具体分析
在原帖中 LZ血量为
4294967280
(二进制为1111 1111 1111 11111111 1111 1111 0000 ) 而2的32次方,即32个1,表示的最大数字为4294967295(这里MH程序没有考虑首位符号位
4294967295
=1111 1111 1111 1111 1111 1111 1111 1111)(这里 我们能猜测出 MH中 用32个二进制位来表示人物或者怪物等的血量 除了第一位是必须的表示正负的外 正常的话MH中理论上最大血量为2的31次方) 除去补码第一位表示正负 我们可以知道 LZ的血量这时应该是-15(1111 1111 1111 1111 1111 1111 1111 0000-1111 1111 1111 1111 1111 1111 1111 1111=0000 0000 0000 0000 0000 0000 0001 0000=-15)(以前帖子有误 说是-16
)
正常的话 血量一旦为负 人物即死亡
这里问题出现了:人物死亡后 在人的思维中 HP=0
但在这里机器(MH服务器)它判定了人物死亡 但还是坚持着 这个人的血不是0 而是-15 而-15是如何用补码表示的呢 正是:
1
111 1111 1111 11111111 1111 1111 0000 (注意 这里红色的1 表示负号) 这样表示 也没什么不妥 只能说是这段程序有点不负责任 懂得编程的朋友应该知道 在这里 加个判定血量是否大与0的if语句即可了
if (血量<0)
{
死亡;
血量=0;
}
else
{
GOON...
}
但这里,MH服务器在继续了上面那个不大不小的错误的同时,犯了一个严重的错误:它没有把-15的补码先转换为原码 再转化为给玩家看的十进制数 而是直接把1111 1111 1111 11111111 1111 1111 0000 这样一个天文数字转换位了十进制数 于是 LZ的血 爆发了
(如果你很忙 看这段红字就够了)
三.写在最后
1.这个问题也许不是什么严重的BUG 但是却反映了一个游戏的品质 起码是内部程序的严谨性
2.这个问题对一般人来说 是很简单的 不要被庞大的数字吓倒
3.
我分析出了在MH中 血量最大是2的31次方 我觉得 策划需要考虑下这个问题了 正常情况下 有人(即使是血鬼)能达到这个血量么? 2的20次方是1048576 100W的血 这个数量级已经足够了吧?希望能把节余的十几位资源省下来 为我们玩家多多做些实事
4.我不是WY的程序员 欢迎批评 指正 不要骂人 谢谢合作
觉得可以的 可以顶顶
或者给个分分
[
本帖最后由 相思の笨笨 于 2007-10-22 18:19 编辑
]
评分
参与人数
13
人气
+40
收起
理由
wzg060123
+ 2
tikki
+ 1
巧菲儿
+ 1
sunhg1983
+ 5
小づ佐
+ 5
﹏绣気℡豬ミ
+ 5
天才没得说
+ 5
黑糊糊黑黑糊
+ 1
死士
+ 5
【青龙】
+ 3
查看全部评分
收藏
0
淘帖
0
支持
0
反对
0
赞(
0
)
回复
使用道具
举报
提升卡
变色卡
84264661
84264661
当前离线
积分
5531
今日未签到
沙发
发表于 2007-10-22 17:11:10
|
只看该作者
来自:天津
- -基本没看懂
回复
支持
反对
使用道具
举报
123456789
123456789
当前离线
积分
1208
今日未签到
3
楼
发表于 2007-10-22 17:16:54
|
只看该作者
来自:辽宁
知识帖必须顶 然后必须给分
回复
支持
反对
使用道具
举报
欣蒂蕊拉
欣蒂蕊拉
当前离线
积分
15051
今日未签到
4
楼
发表于 2007-10-22 17:17:41
|
只看该作者
来自:北京
这个那个 那个这个....路过....
回复
支持
反对
使用道具
举报
lindowking
lindowking
当前离线
积分
11122
今日未签到
5
楼
发表于 2007-10-22 17:18:43
|
只看该作者
来自:广东
我学的那几年知识都丢完了.............现在看不懂了...............
回复
支持
反对
使用道具
举报
olmm01
olmm01
当前离线
积分
7284
今日未签到
6
楼
发表于 2007-10-22 17:19:46
|
只看该作者
来自:广西
楼主一定辛苦了
回复
支持
反对
使用道具
举报
123456789
123456789
当前离线
积分
1208
今日未签到
7
楼
发表于 2007-10-22 17:21:30
|
只看该作者
来自:辽宁
把知识换给老师 是我们小学毕业的唯一一点社会贡献
回复
支持
反对
使用道具
举报
玄了又玄
玄了又玄
当前离线
积分
1378
今日未签到
8
楼
发表于 2007-10-22 17:22:35
|
只看该作者
来自:江苏
懂了
回复
支持
反对
使用道具
举报
小翔♂猴猴
小翔♂猴猴
当前离线
积分
9429
今日未签到
9
楼
发表于 2007-10-22 17:22:47
|
只看该作者
辛苦了
回复
支持
反对
使用道具
举报
№神情天子§
№神情天子§
当前离线
积分
8298
今日未签到
10
楼
发表于 2007-10-22 17:23:11
|
只看该作者
来自:北京
根本就没看
回复
支持
反对
使用道具
举报
popoggg
popoggg
当前离线
积分
1020
今日未签到
11
楼
发表于 2007-10-22 17:23:18
|
只看该作者
来自:海南
忘了 都忘了
回复
支持
反对
使用道具
举报
高兴你就拍拍手
高兴你就拍拍手
当前离线
积分
9223
今日未签到
12
楼
发表于 2007-10-22 17:33:46
|
只看该作者
来自:广东
不错不错★很好
回复
支持
反对
使用道具
举报
相思の笨笨
相思の笨笨
当前离线
积分
2095
今日未签到
13
楼
楼主
|
发表于 2007-10-22 17:47:11
|
只看该作者
来自:山东
自己偷偷顶下~
回复
支持
反对
使用道具
举报
发霉哒幽幽
发霉哒幽幽
当前离线
积分
9009
今日未签到
14
楼
发表于 2007-10-22 17:48:54
|
只看该作者
来自:江苏
好多字
回复
支持
反对
使用道具
举报
皇朝de伯爵
皇朝de伯爵
当前离线
积分
27882
今日未签到
15
楼
发表于 2007-10-22 17:56:34
|
只看该作者
来自:河南
又学了点,顶起
回复
支持
反对
使用道具
举报
1
2
3
4
5
/ 5 页
下一页
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
梦幻杂谈
阴曹地府
龙宫
图文留存
天南地北
新手上路
视频站
梦幻互通版
无底洞