人有十指。人类掰着手指头,发明出了0、1、2…9这十个数字。后来手指头不够用了,便发明出数位(个、十、百、千…)和满十进一的规则,称为十进制。

而计算机靠两个手指头工作。在计算机内部,只有0和1两个数字;对于多位数,从低位向高位满二进一。这叫二指禅--哦,不--叫二进制。

用Windows自带的计算器程序看看二进制数长啥样。打开计算器,切换到“程序员”模式,随意输入一个数,它上面会同步显示出这个数的二进制 表示形式 ,如下图。如果您使用不同的Windows版本,计算器界面可能看起来不一样,但应该会有类似的模式和二进制显示功能。

我输入的是银行卡密码和博客园登录密码,十进制数123456。注意看到中间一排字:BIN 0001 1110… 好长一串,这就是123456这个(十进制)数的二进制 表示形式 。为什么我要强调“表示形式”这四个字呢?因为它俩其实是一样多,只是写法--也就是表示形式--不同而已。真的是一样多吗?下面我演示给你看。

首先,我们习用的十进制数,个位每个数是100 = 1,十位每个数是101 = 10,百位每个数是102 = 100,千位每个数是103 = 1000,…依此类推。所以

123456

= 1 × 105 + 2 × 104 + 3 × 103 + 4 × 102 + 5 × 101 + 6 × 100

= 1 × 100000 + 2 × 10000 + 3 × 1000 + 4 × 100 + 5 × 10 + 6 × 1

二进制是同样的计算过程,只是每个数位所乘的指数的底数不是10,而是2。例如,个位每个数是0 = 1,十位每个数是1 = 2,百位每个数是2 = 4,千位每个数是3 = 8,…依此类推。所以

11110001001000000二进制

= 1 × 216 + 1 × 215 + 1 × 214 + 1 × 213 + 0 × 212 + 0 × 211 + 0 × 210 + 1 × 29 + 0 × 28 + 0 × 27 + 1 × 26 + 0 × …

= 1 × 216 + 1 × 215 + 1 × 214 + 1 × 213 + 1 × 29 + 1 × 26

= 1 × 65536 + 1 × 32768 + 1 × 16384 + 1 × 8192 + 1 × 512 + 1 × 64

= 123456

为什么放着现成十个数字不用,而要用用0和1两个数字表示的冗长不便的二进制数呢?不是因为计算机长了2个手指头…是因为计算机/CPU内部是由无数个微小的电子开关构成的,开关有打开和关闭两种状态,如果说用一个开关表示 一位数 的话,那么每位数就只能有0和1两种数字了。

嗯,正经事就说得差不多了,下面讲点八卦--

八卦是这样讲的:易有太极,是生两仪,两仪生四象,四象生八卦。看出来没?这就是6、7千年前我们的老祖先创造的二进制系统,有

两个数字。两仪是一位数,四象是二位数,八卦是三位数。再往后推还有6位数的六十四卦,例如

当然,八卦是属于中国的,但归根结底是属于韩国(全称 韩民国)的--

而韩国,则是属于百事的--

【Java Saves!】Session 5:计算机器之三--二指禅的更多相关文章

  1. Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理

    相关文章目录: Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理 Java线程池Thr ...

  2. 转!!Java设置session超时(失效)的时间

    Java设置session超时(失效)的时间   在一般系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session具体设置的方法有三种:1 ...

  3. Java使用QRCode.jar生成与解析二维码

    原文V:http://www.cnblogs.com/bigroc/p/7496995.html#3797682 正题:Java使用QRCode.jar生成与解析二维码demo 欢迎新手共勉,大神监督 ...

  4. java web Session会话技术(原理图解+功能+与Cookie的区别+基本使用)

    java web Session会话技术(原理图解+功能+与Cookie的区别+基本使用) 这是我关于会话技术的第二篇文章,对 Cookie有不了解的兄弟可以点击下方的Cookie跳转 Cookie链 ...

  5. Java集合框架练习-计算表达式的值

    最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...

  6. Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)

    最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ...

  7. Java操作Session与Cookie

    1,Java操作Session Java操作Session非常简单,步骤如下 1.1,在servlet中通过request获取session HttpSession session = request ...

  8. C语言计算机器运行时间

    //计算机器运行时间 long i = 10000000L;clock_t start, finish;double duration;//测量一个事件持续的时间printf( "Time ...

  9. 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行

    [TOC] 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行 程序源码 import java.io.IOException; import java.util. ...

随机推荐

  1. MYSQL校对规则

    一.前言 有时候遇到这种情况,你用一个like语句查询,查到的结果中有一些并没有包含你查询的关键词的纪录:有时候遇到这种情况,你的数据库自作聪明的大小写不敏感,让你在更新时把大小写不同的两条记录都更新 ...

  2. Java对象生命周期

    [TOC] 1. 创建阶段(Created) 为对象分配存储空间 开始构造对象 从父类到子类对static成员进行初始化 父类成员变量按照顺序初始化,递归调用父类的构造方法 子类成员变量按照顺序初始化 ...

  3. WebService SendTimeout 超时问题

    System.TimeoutException: 请求通道在等待 00:01:00 以后答复时超时.增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值.分配给此操作的时间可能是更 ...

  4. 配置Tomcat的访问日志格式化输出

    博客搬家,本文新地址:http://www.zicheng.net/article/9   本文描述如何配置tomcat的访问日志,按我们的要求输出指定的日志格式. 且在Nginx+Tomcat的配置 ...

  5. webapi mvc 基础

    标题  状态  描述 WebAPI请求    http://www.cnblogs.com/babycool/p/3922738.html  Media Formatters in ASP.NET W ...

  6. java-cef系列视频第一集:从官方代码编译

    本视频介绍了如何从官方给出步骤编译java-cef代码,生成可运行可移植的发行版. 值得一提的是:截至2016-09-24java-cef代码编译方式有所改变,读者请自行查看bitbucket上关于编 ...

  7. 管理批量邮箱 FOXMAIL 和网易闪电邮(PC端)有什么区别? 对比

    喜欢用FOXMAIL有订阅功能&lt;img src="https://pic1.zhimg.com/fa72df2440f84043a5275b90df30b2f4_b.jpg&q ...

  8. CSS基础(一):开篇

    背景 HTML是一种超文本标记语言,用来定义文档的结构和内容,例如标题.段落和列表等等,而文档内容如何渲染.如何展示,这就需要样式来修饰了.CSS正是可以与HTML很好地结合.如果将HTML比作水,那 ...

  9. 【译文】 C#面向对象的基本概念 (Basic C# OOP Concept) 第一部分(类,对象,变量,方法,访问修饰符)

    译文出处:http://www.codeproject.com/Articles/838365/Basic-Csharp-OOP-Concept 相关文档:http://files.cnblogs.c ...

  10. 简谈ubuntu之DIY发行版

    2007.05.13    二十一世纪到了,每个人都强调自己的个性,于是一种叫做DIY的东西悄然兴起. 操作系统作为全人类智慧的结晶,自然DIY起来难度极大,因而DIY出一个操作系统成就感绝对比买宜家 ...