二进制在编程中的地位举足轻重,这个名词听上去高深莫测,下面来揭开它神秘的面纱。
我们平时计数都是以10为进制,我们平时数数:1、2、3、4、5、6、7、8、9,数到10时导致个位变成0,十位变成了1,因为9+1要向十位进一,十进制意味着数字的每一位最小为0,最大为9。同理,二进制意味着数字的每一位最小为0,最大为1,十进制的2在二进制如何表示呢?1+1意味着要进一位,对于二进制来说,1+1=10,注意!这里的10不是十进制的十。二进制的减法原理和十进制的减法一样,10-1=1,因为0减1,必须借一位才能够完成这个运算。
二进制里有个位、十位的概念吗?没有。
在解释这个问题前先介绍几个公式,计算机内有一些相应的单位去计量容量,这些单位跟程序员相关的的主要有:
1字节=8位
1字=16位
双字=32位=2字
如何称呼二进制中的位呢?比如10001100是一个总共有8位的数,也称为一个字节,10001100这个字节最左边的1称为字节的最高位,最右边的0称为字节的最低位。从最高位向最低位的方向到第几位就称为高几位,如1000称为这个字节的高4位,100称为这个字节的高3位;从最低位向最高位的方向数起到第几位就称为低几位,如:1100称为这个字节的低4位,100称为这个字节的低3位。一个字节从最低位往最高位的方向依次称为第0位(注意不是第1位)、第1位、第2位直到第7位(注意不是第8位),如10001100的第0位是0,第2位是1,第3位是1,这个称呼对于一个字、一个双字以及更大的计量单位都是一样的。
下面我们把二进制10001100转化为十进制,以加深大家对二进制的认识:(^表示乘幂,2^3表示2的3次方,2^4表示2的4次方,以些类推,2^n表示2的n次方;*表示乘号)
计算过程很简单:1*(2^7)+0*(2^6)+0*(2^5)+0*(2^4)+1*(2^3)+1*(2^2)+)+0*(2^1))+0*(2^0)=128+0+0+0+8+4+0+0=140。
这个公式为什么能把二进制计算成十进制呢,先看看十进制是如何成为人们心目中的数字的。
1206=1*(10^3)+2*(10^2)+0*(10^1)+6*(10^0)
=1000+200+0+6=1206
这个相信大家都能理解,因为十进制是以10为进制的,所以十位是多少就表示这个数中含多少个10,百位是多秒表示这个数中含多少个100.比如一个十进制有3位,那么该数=百位*(10^2)+十位*(10^1)+个位*(10^0);如果一个十进制有n位,那么该数=第n-1位值*(10^(n-1))+第n-2位值*(10^(n-2))+......+第1位值*(10^1)+第0位值*(10^0)。
因为二进制是以2为进制的,理所当然,所以对于一个n位的二进制来说,转化成十进制的方式是:第n-1位值*(2^(n-1))+第n-2位值*(2^(n-2))+......+第1位值*(2^1)+第0位值*(2^0)。
通常我们在编程时使用十六进制来表示二进制,而不直接使用二进制,十六进制数的10-15如何表示呢?它们分别表示为A、B、C、D、E、F。在C语言中,可以使用0X,后跟十六进制的方式来描述一个二进制数,比如0x02表示二进制中的10,二进制如何转换成十六进制呢?
比较实用的方法是将二进制以4位为一组,每4位转化为一个十六进制数字。
以10001100为例,将它分为高4位1000和低4位1100,分别按照按照前面所说的方法转化成十进制,高4位1000:1*2^3=8;低4位1100转化成十进制:1*2^3+1*2^2=12。
8表示为十六进制仍然是8,而12表示为十六进制是C,所以10001100用十六进制表示是8C,C语言描述是0X8C。
==============================================
小技巧集锦:
1、可以先把一个8位的二进制数11111111事先转化十进制数,并记住,下次转化时非常方便,第7位转化为10进制是128,第6位转化后是64,第5位转化后是32,第4位转化后是16,第3位转化后是8,第2位转化后是4,第1位转化后是2,第0位转化后是1,转化时把所有值为1的位的转化后十进制数相加即可。二进制1100转化成十进的过程:8+4=12
分享到:
相关推荐
二进制查看工具在日常工作中是程序员、系统管理员和数字取证专家的必备工具,它们帮助我们理解计算机处理的最基础层面,是揭开数字世界神秘面纱的关键钥匙。无论是调试程序、解析日志、检查硬盘错误,还是分析恶意...
《Golang揭秘:揭开语言的神秘面纱》 Golang,又称为Go语言,是由Google公司于2009年推出的静态类型编程语言。它的设计目标是提高开发者的生产力,同时保持程序运行的高效性和可移植性。在本文中,我们将深入探讨...
诺依曼设计,标志着计算机进入了存储程序控制的新时代,它的出现奠定了现代计算机的基本结构,包括运算器、控制器、存储器、输入设备和输出设备,并采用二进制表示数据。 计算机的特点主要有四方面:首先,运算速度...
【数制转换与加减运算】在计算机科学中,数制转换是基本概念之一,尤其在...通过学习,学生不仅应能掌握进位制的基本概念,理解二进制和十进制的转换,还能运用这些知识解决实际问题,从而揭开计算机运算的神秘面纱。
本文将深入探讨这些概念,帮助开发者揭开C#中浮点数比较的神秘面纱。 首先,我们要理解浮点数的表示方式。在计算机中,浮点数通常使用IEEE 754标准来存储,分为单精度(float)和双精度(double)两种类型。由于二...
【信息与信息技术】这门课程,就为我们揭开了这一神秘面纱。 首先,课程从信息的基本概念出发,让我们理解信息并非只是数据,它还包含了知识、消息和含义等多个方面。随后,课程转向了数制的基本概念,这是理解信息...
这门课程不仅为我们揭开了计算机内部运算的神秘面纱,也为后续的学习打下了坚实的基石。今天,我们将围绕微型计算机的基础知识点,探究数制转换、BCD码以及ASCII码等内容。 首先,让我们从数制转换的原理开始。数制...
Free Hex Editor Neo作为一个强大的工具,可以帮助我们揭开二进制世界的神秘面纱,无论是用于软件开发、调试还是数据恢复,都是不可或缺的辅助手段。通过不断实践和学习,我们可以更有效地利用这类工具,提升我们的...
反编译工具是软件开发领域中的一个重要...总之,反编译工具是开发者手中的利器,帮助他们揭开软件的神秘面纱,但同时也需要谨慎对待,尊重他人的知识产权。在合法合规的前提下,反编译技术可以为Web开发带来诸多便利。
在IT领域,编程语言是构建软件和应用程序的基础工具,易语言作为一款中文编程语言,旨在降低编程门槛,让更多人能够理解和使用。本教学例程主要关注的是...所以,不要急于求成,耐心研究,逐步揭开编程世界的神秘面纱。
让我们一起揭开这个强大的二进制序列化库的神秘面纱。 首先,我们来了解什么是Construct。Construct是一个高级的、声明式的、面向结构的二进制数据解析和打包库。它允许开发者定义自定义的数据结构,用于解析和生成...
8086处理器是英特尔公司于1978年推出的一种16位微处理器,它在个人计算机的历史上占有重要...通过这些实验程序,我们可以逐步揭开计算机系统的神秘面纱,理解其运作机制,这对于任何IT专业人士来说都是一笔宝贵的财富。
微机课程是计算机科学与技术领域的基础课程,它不仅为我们揭开计算机神秘的面纱,而且为后续的专业课程学习和实际操作打下了坚实的基础。本次微机课程总复习,将对计算机基础知识进行系统的回顾与总结,内容涵盖数制...
逆向工程的核心工作是代码分析,这涉及到对目标应用程序二进制文件的深入理解。首先,需要找到并导出目标应用程序的头文件,可以使用class-dump工具从Mach-O文件中提取类和方法的声明。对于更深层次的分析,可使用...
这篇文档将带你揭开编码的神秘面纱,深入理解其中的原理和技巧。 编码的奥秘首先会介绍基础的二进制系统,它是所有计算机语言的基础。在二进制中,0和1的组合代表了所有的数据和指令。理解二进制对于理解计算机如何...
为了让学生们能够深刻理解和掌握数字电路设计的基本原理,本《数字电子技术》实验指导书旨在通过一系列精心设计的实验,帮助学生们逐步揭开数字电路的神秘面纱。从门电路的逻辑功能测试到组合逻辑电路的设计,再到...
本篇文章将带领读者深入探讨51单片机,揭开它神秘的面纱。 首先,单片机,全称单片微型计算机,是将中央处理单元(CPU)、存储器(RAM和ROM)、输入/输出(I/O)接口等集成在一块芯片上的微型计算机系统。它的诞生...
以上只是计算机组成原理的一部分关键概念,通过阅读《编码的奥秘1》中的002至012等PDF章节,读者将能逐步深入这些主题,逐步揭开计算机世界的神秘面纱。这本书的目的是让学习者不仅了解计算机是如何工作的,还能具备...
这就是II2cppdunper应运而生的原因,它是一款专门针对Unity3D的反编译工具,旨在帮助开发者揭开Il2Cpp(Unity3D的C++后端)的神秘面纱。 II2cppdunper的核心功能是反编译Unity3D的Il2Cpp格式的二进制文件,将难以...