ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CPU中的二进制数据(整数篇)

2019-05-28 12:44:38  阅读:367  来源: 互联网

标签:右移 逻辑 运算 二进制 取反 整数 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,补数
来源: https://www.cnblogs.com/mylearning-log/p/10936452.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有