1024程序员节是什么意思(懂硬件的程序员多吗)

你真的懂啥是1024吗?今天就是一年一度的1024节了!packagecom.ocnyang.app;/***程序员们,1024快乐。*/publicclassHello1024{publicstaticfinalStringPROGRAM_APES=”程序猿”;publicstaticfinalStringPROGRAM_GIRL

大家好,又见面了,我是你们的朋友全栈君。

你真的懂啥是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的次幂。

1024程序员节是什么意思(懂硬件的程序员多吗)

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。

1024程序员节是什么意思(懂硬件的程序员多吗)

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的时候,除了达盖尔的旗帜之外,似乎还是值得缅怀一下古埃及人?
摘录

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/127640.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm2021.3.3激活 mac破解方法[通俗易懂]

    pycharm2021.3.3激活 mac破解方法,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 程序人生-感受湖光景色随笔

    开头聊几句1、首先在说明下,我不是大佬,我是渣飞,这个“渣”是技术方面,不要想多,虽然我现在渣,但是我希望不断努力朝大佬的方向靠近2、今天是周四,我司的周四特定上线日,每月总有那么几天,在公司待待很晚。公司楼下有个湖,最近几次上线,有空都会去下面走走3、从公司上线完后,趁着验证功能的时间,写下此篇4、今天闲踱湖边,想写点东西,记录下,写完估计验证也完了,就回家了5、本文非技术文章,是一篇记录自己生活的随笔,我定义自己的程序人生。喜欢看技术文的伙伴可以忽略开头之前文章说过,这是我的一个小

  • pycharm最新激活码2021_在线激活「建议收藏」

    (pycharm最新激活码2021)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html65MJGLILER-eyJsaWN…

  • 短信验证码的作用及安全性

    短信验证码的作用及安全性在每个人都可以参与编辑的Web2.0时代,人人都在使用和注册各种APP账号,而验证码短信就是必不可少的认证工具!所以,验证码短信逐步占据了短信行业中的重要份额。而短信验证码的作用是:1、作为身份凭证首先,验证码是商家给用户验证身份的一个凭证,通过手机短信发送验证码,是最普遍、最安全验证用户真实身份的方式。短信验证码广泛应用于用户注册、密码找回、登陆保护、身份认证、随机密码、交易确认等应用场景。2、…

  • Java多线程详解

    Java多线程详解多任务现实中太多这样同时做多件事情的例子了,看起来是多个任务都在做,其实本质上我们的大脑在同一时间依旧只做了一件事情。多线程原来是一条路,慢慢因为车太多了,道路堵塞,效率极低。为了提高使用的效率

  • java怎么求数组的和_java求和函数写法

    java怎么求数组的和_java求和函数写法Java经典题目之一,数组的各种求和,今天小编就用一些例子带大家了解一下其中详情。基础求和#includeusingnamespacestd;//数组求和//方法一:时间复杂度为O(n),额外空间为(n)intArraySum(intarr[],intn){intsum=0;for(inti=0;i{sum+=arr[i];}returnsum;}//方法二…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号