二进制

本文深入浅出地介绍了二进制及其在计算机中的重要性,包括二进制与十进制的转换、二进制编码(如8421码)以及二进制补码和反码的概念。通过钟表的比喻解释了补码在减法运算中的作用,并通过实例展示了在有限位数的二进制世界中如何利用补码进行加减运算。
摘要由CSDN通过智能技术生成

二进制

前言

世界上分两种人,第1种是知道二进制的,第10种是不知道二进制的。

进制

所谓进制,就是进位制度。

0 1 2 3 4 5 6 7 8 9,十个基本元素就是十进制

基本元素数量名称进位后
0 1 2 3 4 5 6 7 8 910十进制11 12 13 14 15 16 17 18 19
0 1 2 3 4 5 6 78八进制10 11 12 13 14 15 16 17
0 1 2 34四进制10 11 12 13
0 12二进制10 11

思考1: 所谓进制,不过如此,那么你知道十六进制的基本元素第一次进位后的结果是怎样的嘛?

二进制

我们的学习重点也就是二进制——机器语言的本质。

首先介绍一个小技巧,为了用二进制表示十进制的数字,需要四个二进制位来才可以完全表示,这样的一种方式形成了不同的编码(雷格码、2421码、8421码,等等),其中有必要介绍一下8421码,又称作BCD码,介绍这个只是为了帮助大家更快的在大脑中转换数据!

二进制转换成十进制的方法很直白:
11010 = 1 ∗ 1 0 4 + 1 ∗ 1 0 3 + 0 ∗ 1 0 2 + 1 ∗ 1 0 1 + 0 ∗ 1 0 0 11010 = 1*10^4+1*10^3+0*10^2+1*10^1+0*10^0 11010=1104+1103+0102+1101+0100

( 11010 ) 2 = 1 ∗ 2 4 + 1 ∗ 2 3 + 0 ∗ 2 2 + 1 ∗ 2 1 + 0 ∗ 2 0 (11010)_2 =1*2^4+1*2^3+0*2^2+1*2^1+0*2^0 (11010)2=124+123+022+121+020

如果脑子里也这样计算的话,啊这……但是如果按照8421码的位次来记住11118+4+2+1=15的话,记住10118+0+2+1=11的话,这样貌似可以少思考一些,从而降低因进制转换的脱发风险~(其实就是把每位二进制所对应的十进制数记住而已emmm……)

思考2:这是二进制到十进制的转换,那么十进制到二进制十进制到十六进制十进制与八进制八进制与二进制八进制与十六进制二进制与十六进制的转换,大家自己去学习一下吧~

补码与反码

先说转换,1取反是00取反是1

方法举例
反码正数:不变,负数:首位不变,其他按位取反0010 -> 0010 1010 -> 1101
补码正数:不变,负数:反码加一0010 -> 0010 1010 -> 1110

PS:首位是1代表负数,首位是0表示正数,这种表示方式称为原码

介绍补码与反码,对日后处理指令运算有重要作用。

现在以钟表举例,下表是个坏表,现在要把表从10点调整到2点,有两种途径,一个是逆时针转动10 - 2 = 8格,二是顺时针波动时针转动12 - 10 + 2 = 4格,同样的结果,如果换一种表达,即:
10 点 − 8 格 = 2 点 10点 - 8格 = 2点 108=2

10 点 + 4 格 − 12 点 = 2 点 10点+4格-12点=2点 10+412=2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pCKSihVd-1601887511868)(D:\github\Blog\source_posts\龙芯班讲义——二进制\5b166326Nd3225ac9.jpg)]

道理很简单,钟表可以看成十二进制,令A = 11B = 12,钟表的进制元素就是0 1 2 3 4 5 6 7 8 9 A B

那么2点就有两个意思,真正的2点,和真正的14点,14点用是二进制表示就是**12点(细品)**,表中只有12个刻度,没办法表示14点,这样就减去进位12(首位的1),这样就是最后的2点。

所以这里的4就是-8的补码(十二进制),因为一个数8和加4的效果一样,这就是补码的意义

这样说显得有些啰嗦,区区一个二进制本不该如此冗余,但也不知道怎么说,那就这样吧~

应用

在二进制的世界中,一般数字的位数是固定的,就像人的手指数量固定一样。

假设1:二进制只有5,首位要表示符号。

假设2:二进制的世界中只有加法,以及反码的运算,没有其他的运算方式,那么如何实现减法呢?

7+57-5-7+5-7-5这四个计算为例:
7 + 5 = 00111 + 00101 = 01100 7+5=00111+00101=01100 7+5=00111+00101=01100

− 5 的 反 码 = 11010 , − 5 的 补 码 = 11010 + 1 = 11011 -5的反码=11010,-5的补码=11010+1=11011 5=110105=11010+1=11011

7 − 5 = 00111 + 11011 ( − 5 的 补 码 ) = 00010 ( 本 该 是 100010 , 但 是 只 有 5 位 , 所 以 舍 弃 第 一 位 ) 7-5=00111+11011(-5的补码)=00010(本该是100010,但是只有5位,所以舍弃第一位) 75=00111+11011(5)=00010(1000105)

练习1:剩下的两个运算交给大家啦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值