【Java Saves!】Session 5:计算机器之三--二指禅
人有十指。人类掰着手指头,发明出了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:计算机器之三--二指禅的更多相关文章
- Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理
相关文章目录: Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理 Java线程池Thr ...
- 转!!Java设置session超时(失效)的时间
Java设置session超时(失效)的时间 在一般系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session具体设置的方法有三种:1 ...
- Java使用QRCode.jar生成与解析二维码
原文V:http://www.cnblogs.com/bigroc/p/7496995.html#3797682 正题:Java使用QRCode.jar生成与解析二维码demo 欢迎新手共勉,大神监督 ...
- java web Session会话技术(原理图解+功能+与Cookie的区别+基本使用)
java web Session会话技术(原理图解+功能+与Cookie的区别+基本使用) 这是我关于会话技术的第二篇文章,对 Cookie有不了解的兄弟可以点击下方的Cookie跳转 Cookie链 ...
- Java集合框架练习-计算表达式的值
最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...
- Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)
最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ...
- Java操作Session与Cookie
1,Java操作Session Java操作Session非常简单,步骤如下 1.1,在servlet中通过request获取session HttpSession session = request ...
- C语言计算机器运行时间
//计算机器运行时间 long i = 10000000L;clock_t start, finish;double duration;//测量一个事件持续的时间printf( "Time ...
- 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行
[TOC] 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行 程序源码 import java.io.IOException; import java.util. ...
随机推荐
- OllyICE 调试的程序无法处理异常 解决方法
问题描述 在用OllyICE打开可执行文件时出现如下图所示错误 解决方法 1. 选项 -> 调试设置 , 打开调试选项 2. 切换到 异常 页签 3. 取消勾选 忽略(传递给程序)以下异常: 单 ...
- System.Diagnostics.Stopwatch
System.Diagnostics.Stopwatch 注意:此类在 .NET Framework 2.0 版中是新增的.MSDN Stopwatch 实例可以测量一个时间间隔的运行时间,也可以测量 ...
- JVM性能分析与优化
JVM性能分析与优化: http://www.docin.com/p-757199232.html
- sql优化之(DMV)
原文地址:http://technet.microsoft.com/zh-cn/library/bb838723.aspx Microsoft SQL Server 2005 提供了一些工具来监控数据 ...
- DB2解除锁表
背景 生产环境中,我几乎没有遇到过锁表.多是在开发过程中遇到的,比如团队开发中经常会遇到多个功能访问同一张表的情况.如果有开发人员在这张表加了排它锁,然后又忘记提交事务,那么其他开发人员就要一直等待了 ...
- 并行编程多线程之Parallel
1.简介 随着多核时代的到来,并行开发越来越展示出它的强大威力!使用并行程序,充分的利用系统资源,提高程序的性能.在.net 4.0中,微软给我们提供了一个新的命名空间:System.Threadin ...
- spring中bean配置和bean注入
1 bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean ...
- asp.net mvc 配合前端js的CMD模块化部署思想,小思路
1)布局视图,用于协调普通视图和共享视图,实现js库自由选择引用 @{ //具体页面定义好需要引入的js文件,在这里通过共享视图渲染出来 var jsDefines = ViewBag.JsDefin ...
- Reveal-Plugin-for-Xcode 自动结合 Reveal 进行 UI 分析
下载地址:https://github.com/shjborage/Reveal-Plugin-for-Xcode 还记得之前我们如何使用 Reveal UI 分析工具进行实时查看 UI 的结构吗?如 ...
- python 字符串长度
通过内置方法len()来计算字符串的长度,注意这个计算的是字符的长度. aa = 'afebb'bb = '你'print len(aa)print len(bb)