看板 ToS 關於我們 聯絡資訊
來,讓敝人在下小弟不才我來簡單說明一下 為什麼排行榜最大傷害不是實際最大傷害。 大家只要打開排行榜想看看最大傷害 會發現開外掛(?)或是真的超高傷害的那些 (像是這次溢補關卡) 數字都是2147483647,對吧? 另外排行榜裡的最大連擊數也只會是255 這是為什麼呢? 簡單說,就是進制的問題罷了。 各位應該都知道電腦或手機的程式都是使用二進制編碼的 而神魔是採用32bit的計數方式 也就是說,之前在打最大連擊數那個成就 大家應該會發現打出去的傷害 就是只有214748364 (因為最後一位的7被顯示的位數吃掉了) 但是某次大更新後,就正式把遊戲中的數值提升了 (因為怪的血量越來越誇張......) 不過排行榜卻還沒改到 也就造成排行榜最大傷害還是只有2147483647了 這數字跟二進制32bit有個很大的關係 因為2147483647=2^31-1 寫成二進制的數字就會是111111111111111111111111111111131個1) 簡單解釋的話 32bit就是有32個位元 對於我們常用的進制來說 每個位數的最大值就是910就會進位 同理,進制的每個位元最大值就是12進位 那既然32bit32個數字 為什麼最大值卻是31個1而已呢? 因為二進制不像我們能在數字前方 加上+-來表示 而是同樣以10來表示 所以會缺一個位元來表示值 至於排行榜中的最大連擊數也是類似的道理 最大值會是255=2^8-1 代表工程師們只給它8位元 因為連擊數不像傷害會有負值 (像是傷害吸收之類的盾) 所以就是寫滿8個1囉 但是為什麼2^x還要再減1? 這就是數學的部份了 因為數字的計數是從0開始 也就是說第個數是0個數是1,以此類推 才會造成最後需要補個減1 來留給傷害0或是康波0的狀態 文組說明: 盤子最多只能放三顆榴槤 你的實際上有五顆榴槤 不過端出來給客人最多只能放三顆 這樣應該簡單多了哈哈 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.213.239 ※ 文章網址: https://www.ptt.cc/bbs/ToS/M.1509985356.A.0A2.html ※ 編輯: yallowsam21 (106.1.213.239), 11/07/2017 00:26:50
aaa1924a4: 快推以免被認為看不懂11/07 00:27
謝謝支持(?)
alternate: 有沒有文組版本的說明11/07 00:30
已附上
IceLemontea: 為什麼要減1,因為數字從零開始啊…11/07 00:30
各個角度而言大概是這樣解釋沒錯
meredith001: 沒有最經典的32767 失敗11/07 00:31
32767=2^15-1 是16bit的最大數 嗯嗯,可是這數字跟神魔的淵源是什麼OAO?
StevenZ: C876311/07 00:32
會有C的話是十六進制十六進制C8763=十進制821091 (硬要哈哈)
bluelamb: 說好的65535呢11/07 00:33
65535又是來幹嘛的啦XDD
suhaw: 32767~-3276811/07 00:44
這就是16bit有正負值的數值範圍,沒錯~
phoenix286: 把位數都拿去存正數 就不用多花一位計正負了吧11/07 00:45
但是在計算傷害上 就像內文說的 會有傷害吸收的敵人技能啊 因為沒有達成條件造成了傷害吸收 也就是我對敵人的傷害是負數 如果工程師寫的程式是這樣的計算方式 那就會需要計正負數囉
blueocean292: 原來是數學之塔啊 我還以為這裡是神魔之塔勒11/07 00:47
不是數學,是數位邏輯(夠了
Forthelife: 6022911/07 00:48
這是學號是嗎(*′▽‵*)
StevenZ: 32767~-32768 是天堂的正義值範圍啦~~~ XD 11/07 01:02
抱歉那不是我的童年哈哈 不過就這裡而言的確也是同樣的道理沒錯哦~
wayan0607: 推文組說明11/07 01:16
下面被平衡打擊了QQ
ringal: 天堂經典正義值:32767 邪惡值:-32768 神魔沒有跟天堂致敬!11/07 01:24
因為他們總是覺得自己比較偉大哈哈哈哈
Ukanomitama: 先推 11/07 01:26
感謝補血QuQ
jacky1227890: 幹文組說明反而看不懂11/07 01:28
改過了,大人再看看<(_ _)>
qqppzzmm: 有文組版 讚11/07 01:46
不過感覺不夠純 我換了一批新貨,應該不錯
gino9955: 文組版看的霧煞煞 11/07 01:59
我也是解釋的不太清楚 這樣應該可以了吧
gygycowbei: 媽的之前寫加減器被助教刁這個11/07 02:40
我懂... 還好我過了(欠打
kerlakerla: 不懂為什麼少1才看完的 結果沒講11/07 06:50
大哥對不起我補上了
jacky3838: 我是理組我驕傲11/07 07:27
我是偽文組的理組 我不知道該不該驕傲030;;;
sorochis: 為什麼少1不是有講了嗎?任何數字序列都從0開始啊11/07 07:39
sorochis: 十進制的三位數上限不是一千,是999,一樣的道理11/07 07:40
sorochis: 話說這是國小的數學了吧11/07 07:40
最簡單的東西反而最容易忘記 我完全忘了可以這樣解釋哈哈 謝謝大大,我補上說明囉~
WenKaiSu: 第一千個數字是999而不是1000 因為是從零開始數11/07 07:50
沒有綽啦
pcyu16: 文組解釋11/07 08:21
抱歉我不夠文組
pippen2002: 好像看過2147483648 ?11/07 09:13
那就是沒有負數的情況呀 像是回血就會是這數值 因為工程師把回血跟扣血看成兩回事
udm: 第一次搞懂給推。11/07 09:30
很高興能讓非專業領域的各位體會到這種茅塞頓開的感覺哈哈
meredith001: 2147483648就楓幣上限阿11/07 09:35
這也是沒有負數的情況~
peter0627: 認真問神魔為什過了這麼久還是用int 不是long long 11/07 09:41
怕記憶體不夠? 不然就是一改宣告整個程式會有大BUG產生
a0429: 有天堂給推 XD11/07 09:43
雖然不是我寫的 XD
lulu1016: 這理組根本就常識 文組又看不懂 根本一篇廢文11/07 10:21
對不起我也只是想讓非專業領域的人能夠瞭解這原因 所以我也盡量廣納各方意見去完善這個解釋文 當然也謝謝大大的會心一擊 讓我真的能發現自己的盲點
teddybear221: 原本4計概神 推一個11/07 11:09
這是認識的人是嗎哈哈
kerlakerla: 我問的是2^n-1那個-1是為什麼11/07 11:14
嗯嗯我補充了k大再看看^_^
phonya: 2^n在二進位制是n+1位數啊 2^1=(2)10=(10)2 =>2位數11/07 11:23
phonya: 所以只能顯示n位數的話就要2^n-1 那就是n位數的最大值11/07 11:24
這麼說也沒錯 不過文組可能還是會頭暈 (不是戰文理組啦哈哈 畢竟術業有專攻嘛
phoenix286: 因為有0 所以會2^n-111/07 11:50
對的~就是0也是一個數字的基本概念
noproblem226: 文組說明意思感覺不太通11/07 12:38
對不起我真的不是純文組 這樣應該可以了
ghostunt893: 我也推6022911/07 12:42
60229到底是什麼啊啊啊啊QAQ
vector666: 文組也看不懂文組版怎麼辦11/07 14:06
我的錯我掌嘴(啪 改過了這樣應該可以,大哥再看看? ※ 編輯: yallowsam21 (49.218.85.63), 11/07/2017 14:54:37
c22501656: 6022911/07 15:12
gocc: 60229+111/07 15:14
好我知道是誰了 原來是 打牌靠右手 60229 啊
sorochis: 推文完美體現了世界上只有10種人的概念:懂二進位的人跟11/07 18:45
sorochis: 不懂二進位的人11/07 18:45
沒有綽啦~ ※ 編輯: yallowsam21 (49.218.85.63), 11/07/2017 19:06:53
easypro: 沒改成long的原因應該是sql的關係,改下去sql部分工程就 11/07 21:37
easypro: 大了,因為有紀錄部分要同步更新 11/07 21:37
udm: 話說目前的手機大都還是32 bit,跟這個bug無法改掉有關嗎? 11/07 21:39
kerlakerla: 懂了 推回來 11/08 00:30
lkjhgfdsa681: 推推 很清楚一看就懂~ 11/08 02:57
a196203325: 連文組版本都看了好幾次才懂QAQ 11/08 08:44
DJY: 有沒有智X版? 11/08 08:56
omyg0d2007: 推XD 08/25 00:42