到底什么是二进制???

Linux 二进制分析 内容简介 二进制分析属于信息安全业界逆向工程中的一种技术,通过利用可执行的机器代码(二进制)来分析应用程序的控制结构和运行方式,有助于信息安全从业人员更好地分析各种漏洞、病毒以及恶意软件,从而找到相应的解决方案。本书将带领读者探索连一些专家都未曾接触的领域,正式进入计算机黑客世界。 本书是一本剖析 Linux ELF 工作机制的图书,共分为9章,其内容涵盖了 Linux 环境和相关工具、ELF ... 阅读详情


前言

二进制是什么东东?这是一个有趣的问题,第一次听到二进制,应该是在小学的时候,五年级?不太清楚了。接下来,想简单的聊聊个人(书上+百度ORZ)对二进制的看法。


一、首先了解什么是进制?

用书上类似比较官方的语言就是说,在基数为 k k k 的位置记数系统(其中 k k k 是一个正的自然数,它也叫做基数), k k k 个基本符号(或者叫数字)对应于包括0在内的最小的 k k k 个自然数(依稀记得应该是教科书上有过变动的,一直没定下来,零到底是不是自然数)。 而要产生其他的数,符号在数中的位置要被用到。最后一位的符号用它本身的值,向左一位其值乘以 k k k 。一般来讲,若 k k k 是基底,我们在 k k k 进制系统中的数表示为 a 0 + a 1 k + a 2 k 2 + . . . + a n k n a_0 + a_1k + a_2k^2 + ... + a_nk^n a0​+a1​k+a2​k2+...+an​kn的形式,并按次序写下数字 a 0 , a 1 , a 2 , . . . , a n a_0,a_1,a_2,...,a_n a0​,a1​,a2​,...,an​。这些数字是0到 k − 1 k-1 k−1的自然数。

一般来说, k k k 进制中的数写成如下形式:

( a n a n − 1 . . . a 0 . b 0 b 1 . . . ) k = ∑ i = 0 n a i k i + ∑ i = 0 ∞ b i k − i (a_na_{n-1}...a_0.b_0b_1...)_k = \sum _{i=0}^{n} a_ik^i+ \sum _{i=0}^{\infty}b_ik^{-i} (an​an−1​...a0​.b0​b1​...)k​=i=0∑n​ai​ki+i=0∑∞​bi​k−i

现在了解进制之后,我们来看看二进制。

17世纪至18世纪的德国数学家莱布尼茨,是世界上第一个提出二进制记数法的人。用二进制记数,只用0和1两个符号,无需其他符号.[1]

二进制的数据也是采用位置计数法,其中位权是以2为底的幂。例如二进制数据100.01,逢2进1,其权的大小顺序为 2 2 , 2 1 , 2 0 , 2 − 1 , 2 − 2 2^2, 2^1, 2^0,2^{-1},2^{-2} 22,21,20,2−1,2−2。对于有n位整数,m位小数的二进制数据用加权系数展开式表示,可以类比于上面的 k k k 进制,我们把 k k k 用 2 代替即可。即: ( a n a n − 1 . . . a 0 . b 0 b 1 . . . b m ) 2 = ∑ i = 0 n a i 2 i + ∑ i = 0 m b i 2 − i = a 0 ∗ 2 0 + a 1 ∗ 2 1 + . . . + a n ∗ 2 n + b 0 ∗ 2 − 1 + . . . + b m ∗ 2 − m (a_na_{n-1}...a_0.b_0b_1...b_{m})_2 = \sum _{i=0}^{n} a_i2^i+ \sum _{i=0}^{m}b_i2^{-i} = a_0 * 2^{0} + a_1 * 2^{1} + ... + a_n * 2^{n} + b_0 * 2^{-1} + ... + b_m * 2^{-m} (an​an−1​...a0​.b0​b1​...bm​)2​=i=0∑n​ai​2i+i=0∑m​bi​2−i=a0​∗20+a1​∗21+...+an​∗2n+b0​∗2−1+...+bm​∗2−m

二、基本运算

一般计算,其实主要是各种进制之间的换算,其中最常见的还是各种进制与十进制的数值进行换算,毕竟日常生活中最常见的就是十进制了。

eg1: ( 110.11 ) 2 (110.11)_{2} (110.11)2​ 到十进制(the decimal system)

按照我们第一个公式的运算,我们将k换成2,然后对应的数字进行计算即可:
( 110.11 ) 2 = 1 ∗ 2 2 + 1 ∗ 2 1 + 0 ∗ 2 0 + 1 ∗ 2 − 1 + 1 ∗ 2 − 2 = 4 + 2 + 0 + 0.5 + 0.25 = ( 6.75 ) 10 (110.11)_{2} = 1 * 2^2 + 1*2^1 + 0 * 2^0 + 1 * 2^{-1} + 1 * 2^{-2} \\ =4+2+0+0.5+0.25 \\=(6.75)_{10} (110.11)2​=1∗22+1∗21+0∗20+1∗2−1+1∗2−2=4+2+0+0.5+0.25=(6.75)10​
PS:这样看起来很膈应,但是找了半天没看到公式如何实现换行后等号对齐的功能(Latex中的方法似乎行不通),将就着看吧。

其他进制转成10进制,方法类似。

但是,要是其他进制转换成2进制,计算就变得复杂了些.

这里还是以十进制转化成二进制做例子:

eg2: ( 83.37 ) 10 (83.37)_{10} (83.37)10​ 到二进制(the binary system)

首先,我们将 83.625 分成两个部分,包括整数部分和小数部分,即83和0.625。接着,我们分两组来分别操作我们的两组数。 我们用83去除于2,会得到商和余数(41,1),同理,我们继续用商来除于2,得到商和余数(20,1),反复操作,知道商小于2为止(如果是其他进制,比如k进制,则商小于k即可)。这个时候假设我们分别得到了 ( a 0 , b 0 ) , . . . , ( a n , b n ) (a_0,b_0), ...,(a_n,b_n) (a0​,b0​),...,(an​,bn​),这么多组商和余数,我们将余数按照逆序排列,记为 b n b n − 1 . . . b 0 b_nb_{n-1}...b_0 bn​bn−1​...b0​,此时,我们就完成了整数部分的换算。而小数部分于此不同,如本例的0.625,要不断的乘于2,得出他的整数部分,然后用剩下的小数部分再乘于2,依次操作,直到计算结果为1,则停止计算。这里不好描述,我用图片来解释:

二进制与十进制互换
番外篇:为什么计算机要用二进制[1]

  1. 二进位计数制仅用两个数码。0和1,所以,任何具有二个不同稳定状态的元件都可用来表示数的某一位。而在实际上具有两种明显稳定状态的元件很多。例如,开关的”开“和”关“; 电压的”高“和”低“、”正“和”负“;纸带上的”有孔“和“无孔”,电路中的”有信号“和”无信号“, 磁性材料的南极和北极等等。 利用这些截然不同的状态来代表数字,是很容易实现的。不仅如此,更重要的是两种截然不同的状态不单有量上的差别,而且是有质上的不同。这样就能大大提高机器的抗干扰能力,提高可靠性。

  2. 二进位计数制的四则运算规则十分简单。而且四则运算最后都可归结为加法运算和移位,这样,电子计算机中的运算器线路也变得十分简单了。不仅如此,线路简化了,速度也就可以提高,这也是十进制所不能相比的。

  3. 在电子计算机中采用二进制表示数可以节省设备。可 以从理论上证明,用三进制最省设备,其次就是二进制。但由于二进位制有包括三进位制在内的其他进位制所没有的优点,所以大多数电子计算机还是采用二进制。此外,由于二进制中只用二个符号 “ 0” 和“1”,因而可用布尔代数来分析和综合机器中的逻辑线路。 这为设计电子计算机线路提供了一个很有用的工具 。

  4. 二进制的符号“1”和“0”恰好与逻辑运算中的“对”(true)与“错”(false)对应,便于计算机进行逻辑运算。


总结

二进制还是一个比较有意思的东西,特别是现在编程学习中基本很少见了(其实自己也没有见过什么汇编语言,虽然我知道有这个东东,哈哈),多多了解还是有好处的。

微信小程序 - 真机调试请求异常 Provisional headers are shown,微信小程序开发者工具调试没问题就真机测试时出现请求报错(微信小程序请求接口提示Provisional h) 微信小程序开发 Request Headers: Provisional headers are shown,微信开发工具请求正常,真机调试和上线之后出现 Provisional headers are shown,微信小程序开发工具调试没问题,真机调试Provisional headers are shown,在开发工具调试,请求正常没问题,使用真机调试,请求异常,微信小程序真机调试时后台是本地服务器,显示“Provisional headers are shown”问题解决,微信小程序websocket 阅读详情

相关推荐

信息化建设项目前期方案编制4:如何画好四张图

这里探讨以下具体的总体设计操作层面的工作。总体设计主要是完成四张图,总体架构(逻辑架构)、应用架构、网络拓扑、系统部署图。对于一些单一的系统,往往总体架构和应用架构可以合一。网络拓扑画好了,系统部署图也可以省略。有些项目还会在这之外,有所谓的技术架构图。对应用系统、数据存储等各个部分各自用的主要技术、服务等,给出总体设计图。但通常来说,这四张图在一个中等规模(200~500万,软件...

Leonardo的博客 4636

带你了解二进制(基础篇)

1.什么是二进制 学习概念: 二进制是计算机技术中广泛采用的一种数制,二进制的数据用0和1表示,它的基数是二,进位原则是“”“逢二进一”(例01=1,11=2的一次方加1=3),借位规则是“借一当二”。 2.二进制转其他进制(基础) 1.二进制八进制 (注;三个数字为一个阶段,用二进制把一个阶段一个阶段拼起来) 例子:100001100 0012^2 141 2.二进制→十进制 (注;没有分阶段,十进制比较特殊,需要把每个数字代表...

m0_59619191的博客 1万+

《Ventoy 制作系统安装 U 盘的具体步骤》

然后您可以在电脑的磁盘管理中对 U 盘进行快速格式化,选择 FAT32 或 NTFS 文件系统。至此,Ventoy 系统安装 U 盘就制作完成了。您可以在需要安装系统的电脑上,从 U 盘启动,然后选择相应的系统镜像进行安装。安装完成后,将您需要的操作系统镜像文件(如 Windows、Linux 等的 ISO 格式镜像)复制到 U 盘的根目录。在安装程序中,选择您插入的 U 盘设备,确保选择正确,以免误操作。2. 确认选择的 U 盘盘符正确,防止误操作导致其他磁盘数据丢失。点击“安装”按钮,等待安装完成。

jiyiwangluokeji的博客 2668

二进制(通俗简要版,一看就会)

进制、二进制,通俗易懂

ssh1213335652的博客 3万+

chmod: changing permissions of `/u01/app/oracle/product/11.2.0/dbhome_1/bin/extjobO‘: Operation not

oracle 11.2.0.4安装psu 29141056,日志末尾抛出报错 Patching component oracle.ctx, 11.2.0.4.0... Applying sub-patch '29141056' to OH '/u01/app/oracle/product/11.2.0/dbhome_1' Patching component oracle.rdbms, 11.2.0.4.0... Patching component oracle.rdbms.rman, 11.2.0.

m0_37625564的博客 1833

别再让步进电机‘发烧’了!用FOC闭环驱动实现精准力矩控制(基于P0斩波恒流版)

本文详细介绍了如何利用FOC闭环驱动技术(基于P0斩波恒流版)解决步进电机过热和力矩控制不精准的问题。通过对比传统开环控制的缺陷,展示了FOC在降低温度、提升精度和能效方面的显著优势,并提供了硬件配置、软件实现及性能优化的完整方案。

weixin_30872157的博客 567

什么是二进制,进制之间是如何转换的,浅显易懂的,一看就会

讲运算符之前先说说进制的转换 在JavaScript中,普通的数字称为十进制 那么什么是二进制呢? 二进制数据是用0和1两个数码来表示的数,它的基数为2,进位规则是逢二进一 加法:0+0=0;1+0=1;0+1=1;1+1=0(等价于10,向前进一) 案例(前面用0补齐) 1+1=10,10+1=11,11+1=100,100+1=101,101+1=110,110+1=111,111+1...

榴莲不好吃的专栏 8万+

保姆级教程:用Python+OpenCV搞定Orbbec Gemini深度与彩色流对齐(附完整代码)

本文提供了一份详细的Orbbec Gemini深度与彩色流对齐教程,涵盖从环境配置到完整代码实现的每一步。通过解析深度流对齐原理,对比不同对齐模式,并提供工业级应用中的问题排查方法,帮助开发者快速掌握Orbbec Gemini相机的使用技巧。文章还包含进阶应用如点云生成与三维重建的实战代码。

weixin_29090917的博客 470

二进制计算及转换

二进制简单介绍 进制与十进制的计算对比 用二进制转十进制的转换关系 二进制转十进制 十进制转二进制 二进制的简单运算 算符&,简称“与” 算符|,简称“或” 算符!,简称“非” 算符~,简称“取反” 运算符^,简称“异” 二进制的位运算 左移“” 无符号左移“”...

jule_zhou的博客 2万+

SIMULINK开发项目实例 1000 例专栏之第847例--基于飞行控制与稳定性的场景实例:多旋翼无人机在风扰动下的稳定性分析

本文介绍了使用Simulink进行多旋翼无人机风扰动稳定性分析的完整流程。首先建立包含动力学模型、控制系统和环境模拟三大模块的仿真系统,其中动力学模型基于牛顿-欧拉方程,控制系统采用PID调节器。重点展示了MATLAB函数实现的风扰动模型和姿态控制算法,通过设置输入信号和输出显示模块完成闭环仿真。最后通过多次风速条件下的仿真测试评估控制系统的抗干扰能力和稳定性表现,为无人机控制系统设计提供了有效的仿真验证方法。

xiaoheshang_123的博客 322

全面解读 SAP Business Data Cloud

SAP 在 2025 年初正式推出(简称BDC),它把、以及全新的统一封装为一项完全托管的 SaaS 服务,配套交付“语义层 + 数据产品 + 智能应用”三层能力,为企业构建真正贴近业务语境的 “Business Data Fabric”。这一方案不仅解决了跨系统数据碎片化、治理难及 AI 训练数据可信度低的问题,还为现有 BW 客户、S/4HANA以及第三方工作负载提供云上现代化路径和零拷贝数据共享机制。本文将围绕技术架构、核心组件、业务场景、迁移路线及未来展望展开,以 Henkel 等真实案例佐证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 909

二进制

“世界上有10种人,一种懂二进制,一种不懂。”  二进制:  1、基本符号:0,1  2、基本运算规则:0+0=0,0+1=1,1+0=1,1+1=10  权值表示: 十进制45.5:  45.5=4*10^1+5*10^0+5*10^-1  1011.11的权值表示:   1*2^3+0*2^2+1*2^1+1*2^0+1*2^-1+1*2^-2=11.75  

程序员劝退中心 4284

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

关于二进制???

2.运算简单,r进制数共有r×(r-1)/2个求和与积的运算公式,对二进制而言,只有3个求和公式(0+0=0,0+1=1,1+1=10)三个求积公式(0×0=0,1×0=0,1×1=1)以十进制小数转换为二进制数为例,将十进制小数连续乘以基数2,直到乘积的小数部分等于0为止,然后顺序排列每次得到的乘积的整数部分,就得到了该十进制小数对应的二进制小数;以十进制数转换为二进制数为例,将十进制数连续除以基数2,直到商等于0为止,然后逆序排列每次得到的余数,就得到了与该十进制对应的二进制数;

onorange的博客 1214

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

10.二进制:二进制数分为哪两种???什么是二进制中的原码、补码、反码???

跟汤老师学Java笔记:二进制 完成:第一遍 1.计算机底层用什么进制? 所有数据在计算机底层都是以二进制形式保存的 2.二进制数分为哪两种? 二进制数分为两种: 无符号二进制,只能存储正整数 有符号二进制,可以存储正数和负数,最高位为符号位,0表正,1表负数 正数5表示为 00000000 00000000 00000000 00000101 负数­-5表示为 10000000 00000000 00000000 00000101 3.介绍下二进制中的原码、补码、反码? 原码 原始二进制值 反码 正数的反

ADbyCool的博客 716

???--???二进制变换

题意 : 定义两种变换 1 : i = i - 1 2 : i = i - lowbit (i) 定义函数Calc(i,j)为二进制意义下 i 变换到 j 的最小步数。 给你一个二进制整数 n,要求 sigma {(i = 1 -> n) sigma {(j = 0 -> i - 1) Calc (i,j)}} 数据范围 : 令n的长度为len len &lt...

weixin_30794499的博客 101

二进制计算机代码,二进制代码是什么???

满意答案Y_Pan丶唯爱麦2013.12.14采纳率:40%等级:8已帮助:463人一般来说电脑里面我们看到最多的是2进制和16进制。电脑里面所有的文件,都分成两种。一种是文本文件,一种是二进制文件。文本文件属于只存储Ascii码属于符号和文字范围内的数据。其实他也是二进制文件的一种。比如我们用记事本打开一个Exe文件,显示乱码。因为它是以二进制方式存储的。如果我们用专门的软件打开,看到的...

weixin_30940057的博客 3374

二进制除法移位相减_二进制除法怎么算???急啊!!!

展开全部除法就是移位相减例:62616964757a686964616fe59b9ee7ad943133336565373999用2进制是 11000115是101先1100011 - 1010000 = 10011(其中二进制1010000 = 5乘2的4次幂)再10011 - 1010 = 1001 ( 其中二进制1010 = 5乘2的1次幂)再1001 - 101 = 100( 其中二进制1...

weixin_39627699的博客 2138

【位运算???】 190 颠倒二进制位

题目 颠倒给定的 32 位无符号整数的二进制位。 思路 取当前 n 的最后一位:n & 1 将最后一位移动到对应位置,第一次为 31 位,第二次是 30 位,即:31、30、29… 1、0,写作代码 bit << 31; 退出条件,二进制反转时,如果剩余位数全位 0,则可以不用再反转。 <<        左移       右侧空补位0 />>        右移        左侧空位补最高位,即符号位 />>>       无符号右移    

qq_42215827的博客 194

十进制数??? 转换为二进制

Private Sub Command1_Click()     Print erjinzhi(???) End Sub Private Function erjinzhi(m As Byte) As String     Dim n As Byte     n = m     Const er As Byte = 2     Dim returns As String    

lsq50341012的博客 360

救助贴???关于Mysql插入二进制文件

尝试把图片文件转化成二进制存入Mysql数据库的blob类型的列中。我是想写个Java类实现简单的存入,但是运行出错。   网上有关错误提示码的解答,和我遇到的都不一样。而且大多是说是sql语句有问题,但我的Sql语句在其他工具中可以运行,   下面是源码,希望知道的朋友解答。我的这和类是根据Oracle的Java类改的,会不会是类里代码有问题。     import java.io.*; imp...

shiyangxt的专栏 253

Python:如何找出二进制中1的个数???对于任意无符号数字n,与本身-1做按位与操作,循环到0停止,循环i次,就有i个1.

Python:如何找出二进制中1的个数???对于任意无符号数字n,与本身-1做按位与操作,循环到0停止,循环i次,就有i个1. 有一个很巧妙的算法,就是对于一个二进制整数,将它减一和它本身相与(&amp;),会把这个整数最右边的1变为零,直到全为0为止,有多少1就可以循环多少次。 例如: # 3 ==&gt; 0000 0011 二进制里面有两个1 # 第一次让 3&amp;(3-1) ==...

May女子の博客 669

iOS崩溃日志ips解析都是???

最近的ips文件出现了大量的???,如图。

weixin_71645445的博客 1176
上一篇: 数据分析
下一篇: Day01.初识Python
晶晶家的小可爱
博客等级 码龄9年 1235粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值