CPU中的二进制数据(整数篇)
Posted mylearning-log
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CPU中的二进制数据(整数篇)相关的知识,希望对你有一定的参考价值。
1.用二进制数表示计算机信息的原因
计算机内部CPU和内存都是IC的一种,它们都有多个引脚。IC的所有引脚,只有直流电压0V或5V两个状态。也就是说,IC的一个引脚,只能表示两个状态。IC的这个特性,决定了计算机的信息数据只能用二进制数来处理。计算机处理信息的最小单位——位,就相当于二进制中的一位。
对于用二进制数表示的信息,计算机不会区分它是数值,文字,还是某种图片的模式等,而是根据编写程序的各位对计算机发出的指示来进行信息的处理。
2.什么是二进制数(略)
3.移位运算和乘除运算的关系
移位运算指的是将二进制数值的各数位进行左右移位的运算。移位有左移和右移两种。
移位操作使最高位或最低位溢出的数字直接丢弃就可以了。
4.便于计算机处理的“补数”
4.1表示负数的方法:
计算机在做减法运算时,实际上内部是在做加法运算。用加法运算来实现减法运算。为此,在表示负数时就使用“二进制的“补数”。补数就是用正数来表示负数。
为了获得补数,我们需要将二进制数的各数位的数值全部取反,然后再将结果加1。原理是:“将二进制数的值取反后加1的结果,和原来的值相加,结果为0”
需要注意的一点:当运算结果为负数时,计算结果的值也是以补数的形式表示的。例如3-5这个运算,用8位二进制数表示3时是00000011,而5=00000101的补数取反加1,也就是11111011。因此3-5其实就是00000011+11111011的运算,运算结果为11111110,最高位变成了1。这就表示结果是一个负数。那么通过求解补数的补数,就可知该值的绝对值。因此11111110的补数,取反加1后为00000010。这个是2的十进制数。因此,11111110表示的就是-2。我们就得到了3-5的正确结果。
5.逻辑右移和算术右移的区别
算术右移:将二进制作为带符号的数值进行运算时,移位后要在最高位填充移位前符号位的值(0或1).这就是算术右移。
只有在右移时才必须区分逻辑位移和算术位移。左移时,无论时图形模式(逻辑左移)还是相乘运算(逻辑右移),都只需要在空出来的低位补0即可。
下面顺便介绍以下符号扩充。以8位二进制数为例,符号扩充就是指在保持值不变的前提下将其转换成16位和32位的二进制数。将01111111这个正的8位二进制数转换成16位二进制数时,很容易就能得出0000000001111111这个正确结果,但是像11111111这样用补数来表示的数值,该如何处理比较好呢?实际上将其表示成1111111111111111就可以了。也就是说,不管时正数还是用补数表示的负数,都只需用符号位的值(0或1)填充高位即可。这就是符号扩充方法。
6.逻辑运算
逻辑运算是指对二进制数各数字位的0和1分别进行处理的运算,包括逻辑非(NOT运算),逻辑与(AND运算),逻辑或(OR运算)和逻辑异或(XOR运算)四种。
对于逻辑运算,我们需要一个整体的把握:
逻辑非:是所有位的取反操作
逻辑与:是将一部分变为0(复位到0)的操作
逻辑或:是将一部分变为1(复位到1)的操作
逻辑异或:是将一部分进行取反(相同取0,不同取1)的操作
以上是关于CPU中的二进制数据(整数篇)的主要内容,如果未能解决你的问题,请参考以下文章