人有十指。人类掰着手指头,发明出了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. [Javascript] Functor Basic Intro

    Well, this stuff will be a little bit strange if you deal with it first time. Container Object: Just ...

  2. 删除.gitignore中的在version control中的文件

    如果有一个文件例如xyz在版本控制系统中,然后你发现这个文件不应该提交到git上,所以加了.gitignore文件并将其加入其中,但是git不会自动讲其从版本库中移除它.如果你只有一个文件,你可以使用 ...

  3. Net框架下-ORM框架LLBLGen的简介

    >对于应用程序行业领域来说,涉及到Net框架的,在众多支持大型项目的商用ORM框架中,使用最多的目前了解的主要有三款: 1.NHibernate(从Java版移植来的Net版). 2.微软的EF ...

  4. checkbox与说明文字无法对齐的问题

    解决方法: vertical-align:middle; 例:<input type=checkbox id="theId" name=checkbox style=&quo ...

  5. 【转】如何判断Javascript对象是否存在

    Javascript语言的设计不够严谨,很多地方一不小心就会出错. 举例来说,请考虑以下情况. 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言描述的算法如下: ...

  6. 命令行下打WAR包

    命令行下打WAR包: jar -cvf TestMem.war *

  7. [翻译]使用Swift在Xcode中创建自定义控件

    使用Swift在Xcode中创建自定义控件 原文 IBDesignable and IBInspectable With IBDesignable and IBInspectable, develop ...

  8. 将Word转为带书签的PDF

    将word文档存为PDF可以带来很多便利,在这里就不多说了.下面讨论一下转换方法. 我现在使用的是Word2010+Acrobat9,所以这里仅讨论使用这种组合的转换方法. 在Word2010中有两种 ...

  9. linux samba 服务配置及日志管理

    2012-01-16    安装samba共需3个rpm包   samba-common-3.0.23c-2.i386.rpm  samba-3.0.23c-2.i386.rpm  samba-cli ...

  10. perl备忘

    List Operators: sort reverse grep map my @castways = sort qw( first second third); # qw 给单词自动加上双引号 g ...