图解二进制(篇1)

这篇博客介绍了计算机基础中的二进制知识,包括原码、反码、补码的概念及其在二进制运算中的应用,如二进制加法。还探讨了为什么需要补码的原因,并涉及了二进制与十进制之间的转换以及按位运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计算机基础笔记1

目录

原码

反码

补码

进制转换(二进制与十进制)

二进制运算(&|~^)

二进制加法

说明:以下均指8位二进制数形式

码码三剑客

在了解原码之前,先熟悉几个名词.。

机器数

数字在计算机中的二进制表现形式。分正负。

图解

在这里插入图片描述

真值

有符号数转二进制之后,其原来对应的值位真值,带符号的二进制转为其他进制之后的值称为***形式值***。

图解

注:红色的数字1是十进制-3转二进制之后的符号位

在这里插入图片描述

原码

符号位+真值的绝对值,即是带符号的二进制数

举例:

十进制二进制原码
+1(正一)0000 0001
-1(负一)1000 0001

注意:八位二进制取值范围[-127,127]即为[1111 1111,0111 1111]

反码

  • 正数的反码是它本身
  • 负数的反码是在其原码基础上,符号位不变,其余位取反

图解:

在这里插入图片描述

补码

  • 正数的补码是其本身
  • 负数的补码是在原码基础上,符号位不变,其余位取反后加一
  • 即等价于在反码基础上+1

图解

在这里插入图片描述

提示:二进制加法在后面会介绍

番外篇:为什么会有补码的出现????

  • 计算机中只有加法

从小学开始,亲爱的数学老师就告诉我们,在数学中,一个数减去另一个数

等于该数加上另一个数的相反数(负数)

  • 举个栗子:用原码计算 1-1=1+(-1)=0

在这里插入图片描述

∴易知,利用二进制原码进行计算时,出现了错误的结果,显然1-1=0而不等于-2

你可能已经想到,既然原码不行,那么用反码怎么样?继续看…

  • 举个栗子:用反码计算 1-1=1+(-1)=0

在这里插入图片描述

注意啦!!!

最后的计算结果是-0(负零),虽然在数学上,0和-0可以等价,但在计算机中不行,因为已经有实例证出,两个二进制反码相减的结果等于-0的数并不唯一,了解更多,可以www.baidu.com,或者自己摸索。这里不再赘述。

∴ 在利用其反码进行计算时,也出现了不合理的结论,可见光有原码和反码并不完善,接下来有请压轴大佬补码出场。

在这里插入图片描述

由此,通过***补码***大佬的一番操作,终于将1-1=0证出,成功捍卫了二进制减法的地位!!!!

进制转换(二进制与十进制)

老规矩,正式进入内容之前,有必要了解一下几个相关的概念。

  • 基数

数值位x进制,其基数就是x—这里给出个人笔记上理解,喜欢完整解释的自行 百度

举个栗子:十进制的基数位10,二进制的基数位2

  • 也称位权 数进制中每一位固定位置对应的单位值。

    举个栗子:

    十进制的第二位的权位 10,第三位权位100,类推成立

    二进制第二位的权位2

    第三位权位4 类推成立

总结:对于N进制数,整数部分第i位的权为
N ( i − 1 ) N^{(i-1)} N(i1)

而小数部分第j位权为
N ( − j ) N^{(-j)} N(j)

  • 系数,基数,幂的图示

1234 = 1000 + 200 + 30 + 4 = 1 × 1 0 3 + 2 × 1 0 2 + 3 × 1 0 1 + 4 × 1 0 0 = 1234 1234 = 1000+200+30+4= 1\times 10 ^3 + 2\times10^2 + 3\times10^1 +4\times 10^0= 1234 1234=1000+200+30+4=1×103+2×102+3×101+4×100=1234

在这里插入图片描述

十进制转二进制(整数)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oURfzAbK-1628776994889)(https://i.loli.net/2021/08/12/SvaZs4ydIYU9cg1.png)]

小结:记住除基倒取余 即确定基数,将原值一直除以基数再记录得到的余数,最后倒着将余数写出,根据情况补位即可完成转换。

二进制转十进制(整数)

  • 补齐二进制位数(注意符号位:0表正,1表负)
  • 将位数乘以对应的权值
  • 相加即可

举个栗子:将二进制1010转十进制
1010 ( 二 进 制 ) = 00001010 = 0 × 2 0 = 0 = 1 × 2 1 = 2 = 0 × 2 2 = 0 = 1 × 2 3 = 8 = 0 + 2 + 0 + 8 = 10 ( 十 进 制 ) 1010{(二进制)}=00001010\\=0\times2^0=0\\=1\times2^1=2\\=0\times2^2=0\\=1\times2^3=8\\=0+2+0+8\\=10(十进制) 1010()=00001010=0×20=0=1×21=2=0×22=0=1×23=8=0+2+0+8=10()

  • 特别的,若补足位的二进制符号位为1时,要先取反再换算。
    e g : 11101011 ( 二 进 制 ) 转 十 进 制 1. 取 反 : − 00010100 2. 转 换 3. 最 后 结 果 − 20 eg:11101011(二进制)转十进制\\ 1.取反:-00010100\\ 2.转换\\ 3.最后结果 -20 eg:11101011()1.000101002.3.20

小数和负数的进制转换后序更新…

按位与,或,异或,左右移运算

按位与(&)

图解:3 & 5 = 1
在这里插入图片描述

按位或|

图解:2 | 4 = 6

在这里插入图片描述

按位异或 ^

图解:6 ^ 7 = 1

在这里插入图片描述

按位非~

图解:~ (-5) = 4

在这里插入图片描述

左移运算<<

文解:(-5)<<2=(-20)

  • 位移对象时进制数的补码
  • 将二进制码左移x位,空出的位置用0填充
(-5)的补码:1111 1011
左移2位: 1110 1100
转位原码:1001 0100(-20)
右移运算>>

文解:(-5)>>2

(-5)的补码:1111 1011
右移2位:   1111 1110
求出原码:   0000 0010(-2)

注意:上述步骤中的求原码不是必须的,为了方便讲解而已。

二进制加法

  • 两整数二进制相加时,从低位(右边)开始
  • 依次对每一位进行加法运算
  • 规则:1+1=10,1+0=1,0+0=0,0+1=1
  • 注意1+1=10满足进位条件,需要向前一位进1,0写在本位

图解:23+13 = 36的二进制加法

在这里插入图片描述

PS:二进制的减法,乘法和除法与其他部分相关内容将在后序的笔记中更新…感谢阅读与指正。
与此同时,该文同时发布在个人博客与微信公众号【白码手记】,关注不迷路!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值