【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. ...
随机推荐
- 如何重置CentOS 7的Root密码?设置CentOS 7的Root密码的方法与步骤
- 细数Qt开发的各种坑(欢迎围观)
1:Qt的版本多到你数都数不清,多到你开始怀疑人生.从4.6开始到5.8,从MSVC编译器到MINGW编译器,从32位到64位,从Windows到Linux到MAC.MSVC版本还必须安装对应的VS2 ...
- [LeetCode] 桶排序的特殊解,例 Sort Color
Sort Colors Given an array with n objects colored red, white or blue, sort them so that objects of t ...
- devexpress表格控件gridcontrol设置隔行变色、焦点行颜色、设置(改变)显示值、固定列不移动(附源码)
介绍一些常用的gridcontrol设置. 1.设置隔行变色.首先设置显示隔行变色,步骤:OptionsView-->EnableAppearanceEvenRow-->true和Opti ...
- MSSQL 之事务订单存储过程
1. 赋值 set 或者 select 运算符 2.全局,局部变量区别,生命域 (全局变量用户不能定义) 3.@@identity 返回最后插入行的标识列的列值. 4.delete 只删除了数 ...
- ArcGIS“一个或多个ActiveX控件无法显示...”问题的解决方案
ArcMap启动时的一个警告信息“一个或多个ActiveX控件无法显示...”,如图 出现这种情况,有可能的原因是IE浏览器的安全选项设置被修改了.比如被手动修改过,或者被第三方系统杀毒优化软件修改了 ...
- 固态硬盘寿命实测让你直观SSD寿命!--转
近年来,高端笔记本及系列上网本越来越多的采用固态硬盘来提升整机性能,尽管众所周知固态硬盘除 了在正常的使用中带来更快速度的体验外,还具有零噪音.不怕震动.低功耗等优点,但大家对固态硬盘的寿命问题的担忧 ...
- set -x与set +x指令
转载自:http://www.2cto.com/os/201304/205118.html 参考: http://blog.csdn.net/t0nsha/article/details/860688 ...
- 帮助你在 Photoshop 中轻松实现长阴影效果的工具
扁平化设计正被用于各个主流的移动操作系统以及许多流行的网站,这是一个不断上升的趋势. 这种趋势有其分支,其中之一是“长阴影 “的效果在元素上的使用. 采用角度为 45 度的投影,给对象添加了一份立体感 ...
- Java魔法堂:以Windows服务的形式运行Java程序
一.前言 由于防止维护人员误操作关闭Java控制台程序,因此决定将其改造为以Windows服务的形式运行.弄了一个上午总算搞定了,下面记录下来,以供日后查阅. 二.Java Service Wrapp ...