冷知識(shí) | 為什么招行消費(fèi)金額排名第一位顯示"負(fù)數(shù)"?

先插入一條快訊:對(duì)于信息泄露事件,招行終于有所行動(dòng)了凡蚜!短信為證:


招行安全提示

作為消費(fèi)排名第50多萬(wàn)的我倍感欣慰资盅,我猜逾苫,榜上前50名持卡人應(yīng)該也會(huì)在海量的騷擾短信中找到這條提醒吧黄,并好好保護(hù)好自己的銀行卡安全呢_

下面回到主題:
問(wèn):為什么招行消費(fèi)金額排名第一位顯示"負(fù)數(shù)"?
答:因?yàn)樗?她刷到了2147483647元


招行消費(fèi)金額排名

先看下維基百科上對(duì)這個(gè)數(shù)字的解釋:


2147483647@wikipedia

我們?cè)賮?lái)看一段來(lái)自維基百科“天書(shū)” (計(jì)算機(jī)相關(guān)專(zhuān)業(yè)好好上課的剁友請(qǐng)笑而不語(yǔ))~

在計(jì)算機(jī)科學(xué)中产场,整數(shù)的概念指數(shù)學(xué)上整數(shù)的一個(gè)有限子集鹅髓。它也稱(chēng)為整數(shù)數(shù)據(jù)類(lèi)型,或簡(jiǎn)稱(chēng)整型數(shù)京景、整型窿冯。通常是程序設(shè)計(jì)語(yǔ)言的一種基礎(chǔ)數(shù)據(jù)類(lèi)型,例如java及C 編程語(yǔ)言的int 數(shù)據(jù)類(lèi)型确徙,然而這種基礎(chǔ)數(shù)據(jù)類(lèi)型只能表示有限的整數(shù)醒串,其范圍受制于電腦的一個(gè)字組所包含的比特?cái)?shù)所能表示的組合總數(shù)。當(dāng)運(yùn)算結(jié)果超出范圍時(shí)鄙皇,即出現(xiàn)演算溢出芜赌,微處理器的狀態(tài)寄存器中的溢出旗標(biāo)(overflow flag)會(huì)被設(shè)置,而系統(tǒng)則會(huì)產(chǎn)生溢出例外(overflow exception)或溢出錯(cuò)誤(overflow error)伴逸。
電腦可處理帶號(hào)(signed)及非帶號(hào)(unsigned)整數(shù)缠沈,非帶號(hào)整數(shù)不包括負(fù)數(shù)。由于一般情況下要同時(shí)處理正數(shù)及負(fù)數(shù)错蝴,帶號(hào)整數(shù)把字組的最高有效比特(msb洲愤,即最左邊的比特)視為正負(fù)號(hào)(0代表正,1代表負(fù))顷锰,而數(shù)字則以補(bǔ)碼形式編碼柬赐,以簡(jiǎn)化二進(jìn)制運(yùn)算的邏輯電路。

好了官紫,看到這里肛宋,我猜各位剁友一定更加清(meng)晰(bi)了~ 下面我開(kāi)始說(shuō)“人話(huà)”~
當(dāng)一條數(shù)據(jù)在計(jì)算機(jī)內(nèi)生成時(shí),它會(huì)占用計(jì)算機(jī)的一部分可用內(nèi)存束世,當(dāng)數(shù)字越大它會(huì)需要更多存儲(chǔ)位悼吱。一臺(tái)(CPU)32位機(jī)中最大的整型常量就是2,147,483,647(二十一億四千七百四十八萬(wàn)三千六百四十七),它等于2^31-1 (為什么不是2^32? 因?yàn)榈谝晃灰耪?fù)號(hào)良狈,0代表正,1代表負(fù))笨枯。

當(dāng)排名第1的這位招行持卡人正好刷到過(guò)2,147,483,647元時(shí)薪丁,
計(jì)算機(jī)存儲(chǔ)的數(shù)值為: 01111111111111111111111111111111 (一個(gè)“0”后面三十一個(gè)“1”)
當(dāng)他/她再刷1元時(shí)遇西,計(jì)算機(jī)存儲(chǔ)為: 0000000000000000000000000000000( 三十二個(gè)“0”)
顯示消費(fèi)金額變成了0!

再再刷1元時(shí)严嗜,計(jì)算機(jī)存儲(chǔ)為: 1000000000000000000000000000000 (一個(gè)“1”后面三十一個(gè)0)
還是0粱檀,因?yàn)?-0"還是0

...
再后面刷的,就會(huì)“顯示”為負(fù)數(shù)漫玄。
那為什么負(fù)數(shù)還能顯示到排名第一位呢茄蚯?
因?yàn)橹皇桥琶绦蛴昧?2位的int, 而后臺(tái)的程序用的int64,可以存儲(chǔ)大得多的數(shù)睦优,而不會(huì)溢出渗常。int64即有符號(hào) 64 位整數(shù)數(shù)據(jù)類(lèi)型,相當(dāng)于C++中的long long汗盘、 C# 中的 long 和 SQL Server 中的 bigint皱碘,可以存儲(chǔ)最大2^63-1(+9,223,372,036,854,775,807)的整數(shù)。
也就是縮隐孽,這位持卡人實(shí)際消費(fèi)的金額是2,147,483,647+2+1,105,940=2,148,589,589元0┐弧(21億多)

2014年上海藏家劉益謙刷卡支付2.8億購(gòu)買(mǎi)雞缸杯,已經(jīng)讓羊毛哥大開(kāi)眼界:


百夫長(zhǎng)黑卡持卡人

這個(gè)數(shù)量級(jí)的錢(qián)還能買(mǎi)什么羊毛哥并沒(méi)有概念菱阵,微博上的搜到的價(jià)值21億的是波音787:


波音787寬體客機(jī)被中國(guó)買(mǎi)家匿名購(gòu)買(mǎi)

回顧歷史踢俄,因?yàn)橛?jì)算機(jī)位存儲(chǔ)位數(shù)不足而發(fā)生的事故和錯(cuò)誤其實(shí)不只一次,眾所周知的千年蟲(chóng)問(wèn)題之外晴及,還有很多案例都办。

阿麗亞娜5型運(yùn)載火箭墜毀:
1996年6月4日,阿麗亞娜5型運(yùn)載火箭的首次發(fā)射點(diǎn)火后抗俄,火箭開(kāi)始偏離路線(xiàn)脆丁,最終被逼引爆自毀,整個(gè)過(guò)程只有短短30秒动雹。阿麗亞娜5型運(yùn)載火箭基于前一代4型火箭開(kāi)發(fā)槽卫。在4型火箭系統(tǒng)中,對(duì)一個(gè)水平速率的測(cè)量值使用了16位的變量及內(nèi)存胰蝠,因?yàn)樵?型火箭系統(tǒng)中反復(fù)驗(yàn)證過(guò)歼培,這一值不會(huì)超過(guò)16位的變量,而5型火箭的開(kāi)發(fā)人員簡(jiǎn)單復(fù)制了這部分程序茸塞,而沒(méi)有對(duì)新火箭進(jìn)行數(shù)值的驗(yàn)證躲庄,結(jié)果發(fā)生了致命的數(shù)值溢出。發(fā)射后這個(gè)64位帶小數(shù)點(diǎn)的變量被轉(zhuǎn)換成16位不帶小數(shù)點(diǎn)的變量钾虐,引發(fā)了一系列的錯(cuò)誤噪窘,從而影響了火箭上所有的計(jì)算機(jī)和硬件,癱瘓了整個(gè)系統(tǒng)效扫,因而不得不選擇自毀倔监,4億美金變成一個(gè)巨大的煙花直砂。

阿麗亞娜5型運(yùn)載火箭

PayPal系統(tǒng)錯(cuò)誤:
2013年7月PayPal因系統(tǒng)錯(cuò)誤而從用戶(hù)Chris Reynolds的賬號(hào)上扣除了92233萬(wàn)億美元(具體扣除的金額是92,233,720,368,547,940.25美元,比2^63
? 1美分多出了182.18美元浩习,扣除后賬戶(hù)余額為-92,233,720,368,547,800.00美元静暂;相比之下,2012年美國(guó)全國(guó)的GDP總額“只有”16.24萬(wàn)億美元[1]
)谱秽。PayPal后來(lái)更正了這一錯(cuò)誤洽蛀,并承諾將向Chris Reynolds指定的慈善團(tuán)體提供一份捐助[2]。

Chris Reynolds賬單

羊毛哥想說(shuō)疟赊,錯(cuò)了郊供,就是錯(cuò)了,為什么一份公開(kāi)道歉這么艱難?

參考資料
[1] 2012年各國(guó)GDP統(tǒng)計(jì) -- 世界銀行
[2] PayPal Glitch Actually Put Man $92 Quadrillion in the Red. Daily Finance. 2013 [18 September 2013].

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末听绳,一起剝皮案震驚了整個(gè)濱河市颂碘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌椅挣,老刑警劉巖头岔,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鼠证,居然都是意外死亡峡竣,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)量九,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)适掰,“玉大人,你說(shuō)我怎么就攤上這事荠列±嗬耍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵肌似,是天一觀的道長(zhǎng)费就。 經(jīng)常有香客問(wèn)我,道長(zhǎng)川队,這世上最難降的妖魔是什么力细? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮固额,結(jié)果婚禮上眠蚂,老公的妹妹穿的比我還像新娘。我一直安慰自己斗躏,他們只是感情好逝慧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般馋艺。 火紅的嫁衣襯著肌膚如雪栅干。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天捐祠,我揣著相機(jī)與錄音,去河邊找鬼桑李。 笑死踱蛀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贵白。 我是一名探鬼主播率拒,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼禁荒!你這毒婦竟也來(lái)了猬膨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤呛伴,失蹤者是張志新(化名)和其女友劉穎勃痴,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體热康,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沛申,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了姐军。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铁材。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖奕锌,靈堂內(nèi)的尸體忽然破棺而出著觉,到底是詐尸還是另有隱情,我是刑警寧澤惊暴,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布饼丘,位于F島的核電站,受9級(jí)特大地震影響缴守,放射性物質(zhì)發(fā)生泄漏葬毫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一屡穗、第九天 我趴在偏房一處隱蔽的房頂上張望贴捡。 院中可真熱鬧,春花似錦村砂、人聲如沸烂斋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)汛骂。三九已至罕模,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間帘瞭,已是汗流浹背淑掌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝶念,地道東北人抛腕。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像媒殉,于是被迫代替她去往敵國(guó)和親担敌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容