第二讲,我们来谈谈:“什么是二进制”

首先,你要记住并且不要问为什么:“在计算机中,所有的数据,最终都是使用二进制数表达的。

比如,你的电脑是32位系统,还是64位系统。其实,说的是你的电脑的计算存储能力,能够计算存储2的32次方之多的数据,或2的64次方之多的数据。一看到32,64,可能有些人会说,电脑怎么才计算存储这么点数据呀?且慢,我先带你算算2的32次方或64次方是多少。

——————————————————————————————————————

1:2的0次方

2:2的1次方(第 1 个手指)

4:2的2次方(第 2 个手指)【2(次方)2得四】

8:2的3次方(第 3 个手指)【3(次方)八,这…】

16:2的4次方(第 4 个手指)【4(次方)4十六】

32:2的5次方(第 5 个手指)【5(次方)等于32中的3+2】

64:2的6次方(第 6 个手指)【6(次方)对应64】

128:2的7次方(第 7 个手指)【七(次方)和1音形都很相近】

256:2的8次方(第 8 个手指)【八(次方)和二,就10分完美】

512:2的9次方(第 9 个手指)【九(次方)五之尊】

1024:2的10次方(第 10 个手指)【10(次方)对应1024】

从2的0次方到10次方,哪怕做不到脱口而出,起码也要做到屈指可数

——————————————————————————————————————

2048:2的11次方

4096:2的12次方

8192:2的13次方

16385:2的14次方

32768:2的15次方

65536:2的16次方

131072:2的17次方

262144:2的18次方

524288:2的19次方

1048576:2的20次方

——————————————————————————————————————

…………

…………

…………

太多了,算不下去了。有兴趣的自己算吧。看看你还敢不敢说2的32次方或64次方小。

好了,言归正传,好好来理解一下“二进制”的精髓。

先拿一个二进制的整数来说:

0111,在二进制中,是这样理解的:0X(2的3次方) + 1X(2的2次方) + 1X(2的1次方) + 1X(2的0次方) = 0X8 + 1X4 + 1X2 + 1X1 = 7。

————————————————————————————————————————

解读:从该某某进制的数的小数点左边第一位往左算,分别对应乘以该进制的0次方->乘以该进制的1次方->乘以该进制的2次方->乘以该进制的3次方…

再拿一个二进制的小数来说:

0.0111,在二进制中,是这样理解的:0X(2的-1次方) + 1X(2的-2次方) + 1X(2的-3次方) + 1X(2的-4次方) = 0X(1/2) + 1X(1/4) + 1X(1/8) + 1X(1/16) = 你自己算吧。

————————————————————————————————————————

解读:从该某某进制的数的小数点右边第一位往右算,分别对应乘以该进制的-1次方->乘以该进制的-2次方->乘以该进制的-3次方->乘以该进制的-4次方…

题外话:不要告诉我不懂“负次方”!负次方:一个数的正次方的倒数,即为其负次方。

所以,二进制的数,转换成十进制,很简单。

只需将该二进制的数,按照小数点左边和右边,写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。

例:

二进制的:

0111.0111 = 0X(2的3次方) + 1X(2的2次方) + 1X(2的1次方) + 1X(2的0次方) + 0X(2的-1次方) + 1X(2的-2次方) + 1X(2的-3次方) + 1X(2的-4次方) = 0X8 + 1X4 + 1X2 + 1X1 + 0X(1/2) + 1X(1/4) + 1X(1/8) + 1X(1/16) = 你自己算吧。

那反过来,十进制的数,如何转换成二进制?

讲这个之前,先看个例子:

假设十进制整数A,转换成二进制数为dcba的形式,那么用"按权相加"法,得:

A = a X (2的0次方) + b X (2的1次方) + c X (2的2次方) + d X (2的3次方)

等式左右两边同时除以2,得:

A/2 = a X (2的0次方)/2 + b X (2的1次方)/2 + c X (2的2次方)/2 + d X (2的3次方)/2

上面等式右边,因为只有 a 是乘以 2的0次方 这一项,所以被2除不开而被余下来;

所以第一次除以2,将得到余数,即其二进制的小数点左边第一位 a ;

上面等式右边,把 a 取出来,得到的商:b X (2的0次方) + c X (2的1次方) + d X (2的2次方) 第二次除以2,得:

b X (2的0次方)/2 + c X (2的1次方)/2 + d X (2的2次方)/2

上面式子中,因为只有 b 是乘以 2的0次方 这一项,所以被2除不开而被余下来;

所以第二次除以2,将得到余数,即其二进制的小数点左边第二位 b ;

……

以为类推,除以2取余数得到的商再除以2再取余数,将不断得到其二进制的小数点左边第一二三四……位 abcd 。

再看个例子:

假设十进制小数B,转换成二进制数为0.efgh的形式,那么用"按权相加"法,得:

B = e X (2的-1次方) + f X (2的-2次方) + g X (2的-3次方) + h X (2的-4次方)

等式左右两边同时乘以2,得:

BX2 = e X (2的-1次方) X2 + f X (2的-2次方) X2 + g X (2的-3次方) X2 + h X (2的-4次方) X2

上面等式右边,因为只有 e 是乘以 2的-1次方 这一项,所以乘以2而变成整数;

所以第一次乘以2,将得到整数部分,即其二进制的小数点右边第一位 e ;

上面等式右边,把 e 取出来,剩下的小数部分:f X (2的-1次方) + g X (2的-2次方) + h X (2的-3次方) 第二次乘以2,得:

f X (2的-1次方) X2 + g X (2的-2次方) X2 + h X (2的-3次方) X2

上面式子中,因为只有 f 是乘以 2的-1次方 这一项,所以乘以2而变成整数;

所以第二次乘以2,将得到整数部分,即其二进制的小数点右边第二位 f ;

……

以为类推,乘以2取整数部分剩下的小数部分再乘以2再取整数部分,将不断得到其二进制的小数点右边第一二三四……位 efgh 。

时间: 2024-10-19 22:03:38

第二讲,我们来谈谈:“什么是二进制”的相关文章

16位汇编第六讲汇编指令详解第二讲

16位汇编第六讲汇编指令详解第二讲 1.比较指令 CMP指令 1.CMP指令是将目的操作数减去源操作数,按照定义相应的设置状态标志 2.CMP指令执行的功能与SUB指令(相减指令)一样,但是不同的是CMP指令之根据结果设置标志位 而不修改值 可以操作的指令格式 CMP reg,imm/reg/mem CMP mem,imm/reg 上面是CMP指令的语法,具体的也可以查询帮助文档,inter手册 inter手册查的办法 第一个框代表了CMP指令的所有语法 比如 reg,reg 表示可以比较寄存器

32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首先我们知道32位汇编是可以调用Windows API的,那么今天我们就调用windowsAPI来写一个窗口程序 如果你有windows开发知识,那么就很理解了,如果没有,那么跟着我写,跟着步骤去写,那么也可以写出来 首先我们要编写一个窗口程序(使用SDKAPI编写)有几个步骤 1.设计窗口类 2.注

C语言_第二讲_规范以及常用数据类型

一丶编码规范基本数据类型 编码规范 任何程序员,都应该有良好的的编码习惯,便于以后的代码可读性和维护 常见了编码规范有 匈牙利命名法 驼峰式大小写 匈牙利命名法: 是电脑程序设计中的一种变量命名规则,此命名法又可细分为:系统匈牙利命名法和匈牙利应用命名法. 匈牙利命名法具备语言独立的特性,并且首次在BCPL语言中被大量使用.由于BCPL只有机器字这一种数据类型,因此这种语言本身无法帮助程序员来记住变量的类型.匈牙利命名法通过明确每个变量的数据类型来解决这个问题. 在匈牙利命名法中,一个变量名由一

16位汇编语言第二讲系统调用原理,以及各个寄存器详解

昨天已将简单的写了一下汇编代码,并且执行了第一个显示到屏幕的helloworld 问题? helloworld怎么显示出来了. 一丶显卡,显存的概念 1.显示hello就要操作显示器,这是非常原始的,那个时候的程序员,并没有像现在的RGB(红绿蓝)这样的三色真彩色,那个时候就是操作显卡的,定义了一个标准 这个标准就是我们要往固定的地址写入数据,就会显示出来 具体流程 操作显卡 -> 显卡有自己的缓存 -> 把数据写入到显存中, - > 显示数据 (显示到屏幕上) 但是那个时候是没有字的,

调试器第二讲,单步步入/步过功能实现,以及基本的断点功能实现

调试器第二讲,单步步入/步过功能实现,以及基本的断点功能实现 昨天,我们实现了调试器的基本框架,那么今天我们实现单步功能,还有断点功能,以及使用反汇编引擎 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶反汇编引擎的编译,生成LIB 首先,我们有一个反汇编引擎的代码,现在我们编译连接一下(注意,可以使用GitHub下载,或者百度Google下载) 关于反汇编引擎的介绍: 请参考转载博客 http://blog.c

通达OA 二次开发培训第二讲

本次是通达OA二次开发第二讲,主要介绍了如何在通达OA中进行程序开发,并将开发程序挂接到OA系统中.

从大数据菜鸟走上大师的历程 第二讲:函数定义,流程控制,异常处理

Scala 第二讲 函数定义,流程控制,异常处理 For 循环  for(左边为单个对象obj  <-  右边为对象集合objs ) for 循环里把右边的对象赋给左边 现在正是学习大数据的最好机遇,不花一分钱就可以成为大数据高手,实现年薪50万的梦想. 王家林的第一个中国梦:免费为全社会培养100万名优秀的大数据从业人员! 如果您有兴趣请点击这个链接进入大数据的学习 http://blog.sina.com.cn/s/blog_8fbd39ee0102vto3.html 如果您确实感觉视频教程

机器学习基石第二讲:learn to answer yes/no

博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完成了机器学习基石的第二讲,主要介绍了机器学习的定义,PLA算法和pocket PLA算法.下面将笔记整理在下面. Perceptron Hypothesis Set 延续前面的信用卡发放问题.银行已有的用户数据可能包括用户的年龄.年薪.工作时长.债务情况等特征信息,我们分别用x1,x2,-,xd来表示,那么对于每一个用户都有一个向量来表示其信息.我们为每一个特征信息分配一个权

《上古天真论》第二讲文字版

上古天真论篇第二讲 主讲:徐文兵  主持:梁  冬 播出时间:2008-12-20  23:00—24:00     经文:食饮有节,起居有常,不妄作劳,故能形与神俱,而尽其天年,度百岁乃去.今时之人不然也,以酒为浆,以妄为常,醉以入房,以欲竭其精,以耗散其真,不知持满,不时御神,务快其心,逆于生乐,起居无节,故半百而衰也. 梁:辅佐中国文化,发扬光大,大家好我的梁东,在我面前的是我非常尊敬的厚朴中医学堂的堂主徐文兵老师. 徐:梁东好,听众朋友们,大家好! 梁:大家好!我们计划,从新发现中医太美

POI教程之第二讲:创建一个时间格式的单元格,处理不同内容格式的单元格,遍历工作簿的行和列并获取单元格内容,文本提取

第二讲 1.创建一个时间格式的单元格 Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿 Sheet sheet=wb.createSheet("第一个Sheet页"); // 创建第一个Sheet页 //第一个单元格 Row row=sheet.createRow(0); // 创建一个行 Cell cell=row.createCell(0); // 创建一个单元格 第1列 cell.setCellValue(new Date()); // 给