`
deepfuture
  • 浏览: 4400836 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80078
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70064
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103366
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285840
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15015
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67583
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32157
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45995
社区版块
存档分类
最新评论

揭开二进制的神秘面纱

阅读更多

二进制在编程中的地位举足轻重,这个名词听上去高深莫测,下面来揭开它神秘的面纱。

  我们平时计数都是以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
2
0
分享到:
评论

相关推荐

    二进制查看工具

    二进制查看工具在日常工作中是程序员、系统管理员和数字取证专家的必备工具,它们帮助我们理解计算机处理的最基础层面,是揭开数字世界神秘面纱的关键钥匙。无论是调试程序、解析日志、检查硬盘错误,还是分析恶意...

    golang-demystification:揭开语言的神秘面纱

    《Golang揭秘:揭开语言的神秘面纱》 Golang,又称为Go语言,是由Google公司于2009年推出的静态类型编程语言。它的设计目标是提高开发者的生产力,同时保持程序运行的高效性和可移植性。在本文中,我们将深入探讨...

    揭开计算机的神秘面纱--认识计算机.pptx

    诺依曼设计,标志着计算机进入了存储程序控制的新时代,它的出现奠定了现代计算机的基本结构,包括运算器、控制器、存储器、输入设备和输出设备,并采用二进制表示数据。 计算机的特点主要有四方面:首先,运算速度...

    计算机中的数制转换及加减运算教学设计.doc

    【数制转换与加减运算】在计算机科学中,数制转换是基本概念之一,尤其在...通过学习,学生不仅应能掌握进位制的基本概念,理解二进制和十进制的转换,还能运用这些知识解决实际问题,从而揭开计算机运算的神秘面纱。

    揭开C#浮点相等和关系运算的神秘面纱

    本文将深入探讨这些概念,帮助开发者揭开C#中浮点数比较的神秘面纱。 首先,我们要理解浮点数的表示方式。在计算机中,浮点数通常使用IEEE 754标准来存储,分为单精度(float)和双精度(double)两种类型。由于二...

    free-hex-editor-neo.rar

    Free Hex Editor Neo作为一个强大的工具,可以帮助我们揭开二进制世界的神秘面纱,无论是用于软件开发、调试还是数据恢复,都是不可或缺的辅助手段。通过不断实践和学习,我们可以更有效地利用这类工具,提升我们的...

    反编译工具

    反编译工具是软件开发领域中的一个重要...总之,反编译工具是开发者手中的利器,帮助他们揭开软件的神秘面纱,但同时也需要谨慎对待,尊重他人的知识产权。在合法合规的前提下,反编译技术可以为Web开发带来诸多便利。

    易语言十六进制转换教学例程源码-易语言

    在IT领域,编程语言是构建软件和应用程序的基础工具,易语言作为一款中文编程语言,旨在降低编程门槛,让更多人能够理解和使用。本教学例程主要关注的是...所以,不要急于求成,耐心研究,逐步揭开编程世界的神秘面纱。

    PyPI 官网下载 | constructs-3.3.123.tar.gz

    让我们一起揭开这个强大的二进制序列化库的神秘面纱。 首先,我们来了解什么是Construct。Construct是一个高级的、声明式的、面向结构的二进制数据解析和打包库。它允许开发者定义自定义的数据结构,用于解析和生成...

    ASM.zip_8086 进制_8086-8255_8086进制转换_汇编字符转换

    8086处理器是英特尔公司于1978年推出的一种16位微处理器,它在个人计算机的历史上占有重要...通过这些实验程序,我们可以逐步揭开计算机系统的神秘面纱,理解其运作机制,这对于任何IT专业人士来说都是一笔宝贵的财富。

    揭开iOS逆向解密的神秘面纱

    逆向工程的核心工作是代码分析,这涉及到对目标应用程序二进制文件的深入理解。首先,需要找到并导出目标应用程序的头文件,可以使用class-dump工具从Mach-O文件中提取类和方法的声明。对于更深层次的分析,可使用...

    编码的奥秘

    这篇文档将带你揭开编码的神秘面纱,深入理解其中的原理和技巧。 编码的奥秘首先会介绍基础的二进制系统,它是所有计算机语言的基础。在二进制中,0和1的组合代表了所有的数据和指令。理解二进制对于理解计算机如何...

    编码的奥秘1

    以上只是计算机组成原理的一部分关键概念,通过阅读《编码的奥秘1》中的002至012等PDF章节,读者将能逐步深入这些主题,逐步揭开计算机世界的神秘面纱。这本书的目的是让学习者不仅了解计算机是如何工作的,还能具备...

    II2cppdunper

    这就是II2cppdunper应运而生的原因,它是一款专门针对Unity3D的反编译工具,旨在帮助开发者揭开Il2Cpp(Unity3D的C++后端)的神秘面纱。 II2cppdunper的核心功能是反编译Unity3D的Il2Cpp格式的二进制文件,将难以...

    WindowsDecompiler-0.2.4汉化版

    总之,WindowsDecompiler-0.2.4汉化版是一个强大而全面的工具,它将二进制世界的神秘面纱逐一揭开,为开发者提供了宝贵的洞察力。无论是为了学习、调试还是安全分析,它都是一个不可或缺的工具箱成员。

    HelloChina.rar

    《HelloChina.rar》是一个压缩包,它包含了三个关键文件夹:ASM_SRC、BIN和C_SRC,这些文件夹分别对应了汇编源码、编译后的二...通过深入研究这些源码,我们可以逐步揭开操作系统神秘的面纱,领略到计算机科学的魅力。

    [详细完整版]计算机探秘.ppt

    通过这样的课程,初学者可以逐步揭开计算机的神秘面纱,对计算机系统的组成和工作原理有更深入的理解。 总结起来,计算机探秘涵盖了计算机系统的硬件和软件部分,以及关键技术指标,为初学者提供了全面的入门知识。...

    ghidra_9.1.2_PUBLIC_20200212.zip

    《Ghidra逆向分析工具详解》 Ghidra,这款由美国国家安全局(NSA)开发并公开的软件逆向...无论你是安全研究员、软件开发者还是对二进制代码感兴趣的爱好者,Ghidra都能成为你手中的利器,帮助你揭开程序的神秘面纱。

Global site tag (gtag.js) - Google Analytics