1. 程式人生 > >程式設計師們節日快樂!你真的懂啥是1024嗎?

程式設計師們節日快樂!你真的懂啥是1024嗎?

你真的懂啥是1024嗎?

今天就是一年一度的1024節了!

package com.ocnyang.app;
/**
 * 程式設計師們,1024快樂。
 */
public class Hello1024 {
    public static final String PROGRAM_APES = "程式猿";
    public static final String PROGRAM_GIRLS = "程式媛"; //這個真不知道怎麼翻譯了
    public static final String DATE_1024 = "10月24日";

    public static void main(String args[]) {
        java.util.Calendar c = java.util.Calendar.getInstance();
        java.text.SimpleDateFormat f = new java.text.SimpleDateFormat("yyyy年MM月dd日hh時mm分ss秒");
        is1024(f.format(c.getTime()));
    }

    private static void is1024(String date) {
        if ((!android.text.TextUtils.isEmpty(date)) && date.contains(DATE_1024))
            System.out.println(PROGRAM_APES + "和" + PROGRAM_GIRLS + ",Happy 1024!");
    }
}

好吧並沒有這個節,不過這個日子該慶祝啥,相信在座諸位很多人都懂的:

當然是慶祝二進位制了!

1024是一個整數嘛。它等於 210,二進位制表示為10000000000。

本來1024這種東西應該是數學家的玩具,但是不幸我們有了電腦,而電腦是基於二進位制執行的,所以這個奇怪的數字就變得人盡皆知了……

一個來自巧合的單位

因為電腦的執行和儲存都基於二進位制,所以記憶體也好磁碟也好快閃記憶體也好,理論總容量應該是2的某次冪。老一些的記憶體都是64M、128M、256M、512M這樣的數字,更老一些的電腦開機自檢會在螢幕上讀出記憶體容量,往往還要讀3遍,經常能看到16384kB、65536kB這樣的數字——這些也都是2的次冪。

strip
1024

可能今天多數人對2的次冪主要的熟悉來源,是2048這個遊戲。雖然2048是明確復刻了1024,而1024則是抄襲了"Three!"的創意,但這種事情這裡就不要提了吧。圖片來源:imgur.com

但最常用的2次冪,當然還是1024——它是計算機領域的基本倍數:1M = 1024k,1G = 1024M,等等。

問題來了!1024和1000太接近了——一個有趣而有用的巧合,正因此它成了計算機的基本倍數;但另一些時候就煩人了。

210 ≈ 103,這個巧合在估算的時候很管用。比如想知道262是多少,就把它拆成260 × 22,前者約等於1018,後者等於4,因此就是4×1018。(實際上大約是4.61×1018,相差不大。)

但這只是數量級上相差不大,1024畢竟不等於1000。如果你買了一個4600T的硬碟,結果到手只有4000T,你可能就不開心了。

到底是1000還是1024?

其實現在硬碟幾乎都在玩這個花招。計算機內部計算都是按照1024來算的,但是銷售時卻都會按照1000來宣稱。比如我現在這個標稱為500G的硬碟,實際上總可用空間是接近500000000000位元組,對於計算機來說,只有465G。

1240
1000or1024

然而你又不太好說他們錯——k啊M啊這些字首,都是從科學計數法的字首裡拿來的,人家本來就是指1000,只是在電腦裡成了1024。這些字首都來自希臘語:

  • kilo是1795年法國人設立公制的時候從希臘語改來的詞,本來是1000,但計算機裡1kB = 1024B;
  • Mega來自希臘文“大”,1947年在科學計數法裡確立為1000k,在計算機裡就是1024k;
  • Giga來自希臘文“非常大”,在科學計數法是1000M,計算機是1024M;
  • Tera來自希臘文“怪物”,在科學計數法是1000G,計算機是1024G;
  • Peta來自希臘文“五”,因為正常的大詞用完了,於是改用“第五個1000”這種意思。在科學計數法是1000T,計算機是1024T。其實本來五應該寫作penta,但是因為上一個詞——Tera正好比“四”Tetra少一個字母,所以Peta也是故意去掉了中間的字母來保證不會和原詞相混;
  • Exa來自希臘文“六”,和hexa同根,但這次希臘文自己就沒有保留那個“h”,所以沿用了;
  • Zetta是本系列裡唯一的異類。正常的希臘文“七”字首應該是hepta,但沒有使用,反而用了希臘數字體系裡的Ζʹ(讀作zeta);
  • Yotta則迴歸本源,來自希臘文“八”。

一般使用者幾乎不會接觸到P以上的級別。在T這一級上,二者的差距不到10%,大家通常也就忍了。

為了避免混淆,國際電工委員會(IEC)提出過一個標準:IEC 80000-13。在這個標準下,科學計數法(1000)按照正常標記,而計算機領域(1024)則全都加一個小寫i。因此,1kB就是1000B,而1KiB才是1024B;1 MiB = 1024 KiB,1 GiB = 1024 MiB,等等。不幸的是,這個標準沒有得到很廣泛的使用,現在大家還是都是亂來的。

最先用1024的可能是……埃及人?

大家平常喜歡說是中國人發明了二進位制。這麼說倒也不是不可以,二進位制正式進入數學體系要歸功於萊布尼茲,而萊布尼茲很喜歡中國,明確認為《易》所用的八卦和六十四卦就是一種二進位制。但是古代中國人並沒有使用這些二進位制數進行計算。單純說構想出二進位制表達數字的辦法,那很多文明都幹過;然而古埃及人有一種乘法,真的是在用相當於二進位制的方式來運算了。

比如,計算1262 × 13,他們會這樣計算:

1262 × 13 
= (1024 + 128 + 64 + 32 + 8 + 4 + 2) × 13
= 1024 ×  13 + 128 × 13 + 64 × 13 + 32 × 13 + 8 × 13 + 4 × 13 + 2 × 13
= 13312 + 1664 + 832 + 416 + 104 + 52 + 26
= 16406

等等,這是在幹啥?

如果我們來做乘法的話,那麼我們會:

1262 × 13 
= 1000 × 13 + 200 × 13 + 60 × 13 + 2 × 13

……好像也差不多。

對,古埃及人也是把大數拆成小數來算乘法,但是我們拆成10、100、1000的倍數,而他們則拆成2、4、8、16、32、64……的倍數。這是二進位制呀!

雖然不那麼直觀,但是二進位制也有它的好處:便於不動腦查表格。按照我們十進位制乘法,每一位都有10種可能:千位可能沒有,也可能是1000、2000、3000、4000……9000。這樣表格上就得留出9個位置。但是二進位制乘法下,每一位要麼有,要麼沒有。雖然要拆的次數變成了三倍(還記得為什麼是三倍嗎),但拆完之後就省事兒了。

這種計算方式並沒有對後代產生很大影響,但每次我們敲出1024的時候,除了達蓋爾的旗幟之外,似乎還是值得緬懷一下古埃及人?
摘錄

相關推薦

程式設計師節日快樂真的1024

你真的懂啥是1024嗎? 今天就是一年一度的1024節了! package com.ocnyang.app; /** * 程式設計師們,1024快樂。 */ public class Hello1024 { public static final String PROGRAM

1024 程式設計師節日快樂

又是一年1024,學習技術有幾年了,之前都是以學生的身份認知,今年工作了,在公司度過一個真正意義的程式設計師節。 其實都是外面各種喧囂,我們在公司還是該幹什麼幹什麼,並沒有因為是1024就可以不寫程式碼,或者有了bug先不用修復。我們還是比較普通的底層碼農,沒有太多的理想和

成為一名JAVA程式設計師的必備知識

每逢長假都會有很多程式設計師跳槽,十一、過年是跳槽黃金時刻,尤其是過年。過年的時候年終獎到手,沒有了多少牽掛,年終同學同事聚會比較多,溝通的就多,各種工作機會的訊息也相應會多,所以跳槽的機會也就會多。跳槽就必不可少的要經過面試,那麼作為一個Java程式設計師需要準備哪些面試

一個行走在路上的程式設計師創業者,希望將自己的故事分享給那些想要改變世界的程式設計師,共勉

緣由 我是一個程式設計師,從1995年小學3年級就跟程式設計結緣,當時只是學校開的培訓班以為能玩遊戲就報名了,還學習了basic和logo語言,雖然沒有任何用處也學得不深入,但卻對我的一生產生關鍵影響,讓我喜歡上了程式設計,讓我覺得除了科學家、老師、醫生、畫家、作家之外,世

矽谷大牛推薦11款機器學習工具,國內程式設計師學起來

良好的ML框架降低了定義ML模型的複雜性。 使用這些開源ML框架,您可以輕鬆快速地構建ML模型。在過去十年中,人工智慧的迅速崛起刺激了當今就業市場對AI和ML技能的巨大需求。基於ML的技術現在幾乎用於所有垂直行業,從金融到醫療保健。在本文中,我編譯了一個可用於構建機器學習模型的最佳框架和庫的列表。

2018年讓程式設計師崩潰的瞬間是看笑了,還是看哭了?

  不知不覺中,2018 馬上已經接近尾聲了。當初信誓旦旦給自己立下的 flag 如今都實現了嗎?這一年我們有太多的收穫、太多的感慨、有悲歡也有離合。隨著 2019 越來越近,我們應該總結過往展望未來。 先跟著小編一起回顧一下 2018 年,讓程式設計師崩潰的 

給迷茫的Java程式設計師一些中肯建議,還在虛度光陰

最近好多人私信問我,該怎樣才能成為高薪架構師,還有一個就對當前的狀態感到迷茫,我在此做一個簡單的說明,或者對迷茫中的你來說有些許幫助。 當前你感到迷茫嗎? 有很多人對現在的工作感到很沒意思,因為當前的工作,完全是實現業務,技術上沒有任何提高。在這種狀態下就會感到迷茫,特別是一想到將來這種迷茫

黑馬程式設計師:3分鐘帶C/C++學習路線

http://blog.csdn.net/itcast_cn/article/details/52302287         隨著網際網路及網際網路+深入蓬勃的發展,經過40餘年的時間洗禮,C/C++儼然已成為一門貴族語言,出色的效能使之成為高階語言中的效能王者。而在

程式設計師必須瞭解的知識點——mysql索引機制了

![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200920184226245.jpg#pic_center) ## 一、索引是什麼 MySQL官方對索引的定義為:索引(Index)是幫助MySQL **高效** 獲取資料的資料結構,而MYSQL使用的資料結構是:*

爬取一萬條9.7評分的電影知道是電影?這部電影確實好看

作者:量化小白H 7月番《工作細胞》最終話在十一前放出。這部動漫在b站上評分高達9.7。除了口碑之外,熱度也居高不下,更值得關注的是連很多平時不關注動漫的小夥伴也加入了追番大軍。這次我們的目標是爬取b站上的所有短評進行分析,用資料說明為什麼這部動漫會如此受歡迎。 01工作細胞 《工作細胞

某產品經理糾結:程式設計師正在商量歡度節日,自己卻有一堆需求

隨著國內經濟水平的大幅提升,我們國內各行各業都取得了長足的發展和進步,尤其是一些大型科技公司的崛起,也從另一方面印證了目前中國國力的昌盛。相信有過職場經歷的小夥伴們都有體會,現在比較火熱的行業當屬網際網路行業了,尤其是在其中打拼的程式設計師們尤為吃香,薪資高高,也不是傳統行業

程式設計師,轉變的思維方式吧

筆者已經工作兩年多了,在這裡我想談下關於程式設計師關於職業的思維方式。對於職業的思維方式,決定了一個人的選擇和成就。建立一個正確的思維方式,有利於我們主動管理自己的職業生涯,從而達到自己追尋的結果。 轉變自己的思維方式 我在工作當中發現,有許多開發人員在

1024,祝所有程式設計師節日快樂

不知從何時起,自嘲,已經成為了一名合格程式媛(猿)的可愛屬性之一。當提起“錢多、話少、加班多”的時候,大家往往也都會第一反應想到:你形容的是程式設計師吧。而在現實生活中,有著不同職業、身份或背景的人們,又對我們程式媛(猿)們有著怎樣不同的理解和認知呢? 帶著這樣的疑問,我們在1024程式設計師節這天,

同樣是3年程式設計師,別人25K月薪卻只有15K,反思過沒有

不知道你有沒有想過這個問題,同樣是做了幾年java開發,為什麼你的技術比別人差很多?為什麼別人每月26K你卻只有15K?其實技術水平的高低和個人智商關係不大,主要和勤奮程度、提升方法有關。 勤奮程度不必多說,全靠自我監督和自制力。在這裡我們詳細談談提升方法,畢竟好的提升方法會讓你事半功倍。到底有

程式設計師面試30題,面試失敗的原因都在這裡

時間飛逝,轉眼間從離開百度到創辦愛創課堂前端培訓學校近3年了。工作也發生了巨大變化,從以前的企業專案開發到現在在學校日復一日地為學生授課,但無論對著計算機程式設計,還是為學生講述前端知識,都十分讓我享受。 每到畢業季,看著自己帶出的學生找到理想的工作,心中亦是十分欣慰。學生求職中,經常會問我

Java程式設計師和資深架構師之間差的不僅僅是年齡(進階必看篇)

導讀:閱讀本文需要有足夠的時間,這裡會由淺到深帶你一步一步瞭解一個資深架構師所要掌握的各類知識點,文末也會有一些相應的學習資料分享,你也可以按照文章中所列的知識體系對比自身,對自己進行查漏補缺,覺得本文對你有幫助的話,可以點贊關注收藏一下。 目錄: 一、基礎篇 二、進階篇 三、高階篇

盤點程式設計師的“奢侈品”,最後一樣花錢也買不到

今天咱們就來盤點一下程式設計師用的“奢侈品”,這裡面有些是比較貴的,當然對於程式設計師來說基本都是買的起的,只不過是你會不會去花這個錢而已,最後一樣,個人認為花錢也買不到!談談你們的想法吧。話不多說,咱們直奔主題! 第一個: 人體力學辦公桌辦公椅,程式設計師們一天在電腦面前要進行10小時甚至

程式設計師,千萬不要接私活

本文轉載自公眾號 前端你別鬧 640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1 這個話題很糾結 現在社會,有很多人都在利用個人時間兼職賺錢,程式設計師俗稱“接私活”,其他行業稱作兼職,比如下了班出去跑滴滴,週末兼職搶單送

程式設計師要注意啦99% 的創業公司都不值得加入

前天晚上,一位朋友約晚飯,開始比較詫異,因為這位朋友半年前剛從一家大公司離職,去了另一個城市的一家初創公司。跟朋友聊過,初創公司規模不大,十幾號人,老闆是傳統行業的生意人,進入技術服務行業創業,offer開的不錯,現金部分比當時的公司高很多,還有不小比例的期權。 朋友名校碩士畢業工作了三四年,有