计算机基础(四)

文章介绍了二进制的概念,由莱布尼茨提出,以及计算机为何使用二进制的原因,详细阐述了二进制的运算规则,包括加法、减法、乘法、除法及逻辑运算,并讨论了位运算如左移和右移。此外,还提到了二进制的符号扩充和与十进制的转换方法。
摘要由CSDN通过智能技术生成

什么是二进制

1679年3月15日戈特弗里德·威廉·莱布尼茨发明了一种计算法,用两位数代替原来的十位数,进位规则是“逢二进一”,借位规则是"借一当二"。

计算机程序为什么使用二进制来表示各种数据

这个要从硬件说起,计算机硬件实际上是由IC(集成电路)这种电子部件构成。

包括CPU和内存都是IC的一种。

IC包含多个引脚,所有引脚只有直流电压0V和5V两个状态,就是说IC一个引脚只能表示两个状态,而这个特性决定了计算机信息数据只能用二进制数来处理。

信息的单位

最小单位:

计算机处理信息的最小单位-位(英文单词缩写bit),相当于二进制中的一位。

基本单位

计算机处理信息的基本单位是8位二进制数(8 bit),称为字节(英文单词缩写byte)。

字节是最基本的信息计量单位,内存和磁盘都是使用字节来存储和读写数据。

例如:32位处理器一次可以处理32位(4字节)的二进制数据,64位处理器一次可以64位(8字节)的二进制数据。

二进制的运算

计算机的运算分为算术运算和逻辑运算

二进制的算术运算

加法

加法有四种情况: 0+0=0,0+1=1,1+0=1,1+1=10(0 进位为1)

需要注意的点:计算机在做加法时,由于两个二进制数相加的结果可能超过了原有的位数,针对超过的位数计算机会截断丢弃掉,保留剩下的,即溢出,导致可能得不到正确的结果,比如两个正数相加结果为负数。

减法

计算机在做减法的时候,实际上是做的加法,加负数来实现。

例如 1-1时,实际上是执行的 1 + (-1) 来完成。

在介绍减法之前,先解释下二进制是符合来表示负数的。

负数

二进制标识负数时,一般会把最高位作为符号来使用,0表示整数,1表示负数。

那么如何表示 -1 ? 这里涉及另外一个知识,补码。

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。

在介绍补码概念之前,先介绍一下“模”的概念。

表示n位的计算机计量范围是0~2的N次方 - 1,模=2的N次方。

“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。

例如:以时钟为例,时钟的模为12,在12为模的系统里,加10和减2效果是一样的,因此凡是减2运算,都可以用加10来代替。所以对“模”而言,2和10互为补数。实际上只要两者相加等于模互为补数,例如11和1,9和3等。

补码

把补数用到计算机对数的处理上,就是补码。

原码求补码,分为以下两种情况:

正数

正整数的补码是其二进制表示,与原码相同

负数

负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。

运算

任何有模的计量器,均可化减法为加法运算,就是取反后加1。

以计算 1 - 1 举例:

计算机在运算 1 - 1的时候,实际上是执行的 1 + (-1) 。

计算-1的二进制,实际上就是计算1的补数

在这里插入图片描述

计算 1 + (-1),结果为0

乘法

乘法可以用加法和位运算左移来实现,这里简单说下左移。

规则:

左移后空出来的低位用0补充

左移后使最高位溢出的数字,直接丢弃

举例说明:

# 将变量a的值左移两位

a = 39

b = a << 2;

# 移位前十进制数39用2进制表示是 00100111,左移两位后是10011100,转化成十进制数就是156

1

2

3

4

相当于乘4

除法

位运算

左移

左移后,在空出来的最高位补0。

右移

进行算术右移时,如果数值是用补数表示的负数值,那么右移后空出来的最高位补1,如果是正数,在最高位补0。

二进制的逻辑运算

逻辑运算是指对二进制数各数字位的0和1分别进行处理的运算,包括非、与、或、异或四种。

逻辑运算时,不要把二进制数当成数值,应该把它们看做是开关(1是ON ,0是OFF)。

非(not)

指0变成1,1变成0的取反操作的运算。

与(and)

两个都是1时,结果为,其他情况结果都为0的运算。

或(or)

至少有一方是1时,运算结果为1,其他情况结果都为0的运算。

异或(xor)

排斥相同数值的运算。

当其中一方是1,另一方是0时,运算结果为1,其他情况结果都为0的运算。

位运算

左移

左移后,在空出来的最高位补0。

右移

当进行逻辑右移时,移位后需要在最高位补0。

二进制的符号扩充

以8位二进制数举例,符号扩充就是指在保持值不变的前提下将其转化为16位或32位的二进制数。

规则:不管是正数还是负数,都只需要用符号位的值(0或1)填充高位即可

二进制与十进制的换算

分两步:

将二进制的各数位的值和位权相乘

将相乘的结果相加的结果就是十进制数

图解:

位权:

2的N次方就是位权,如果是十进制就是10的N次方,十六进制就是16的N次方

注意:该算法同样适用于其他进制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值