02.二进制运算

来源:互联网 发布:mysql查询子语句 编辑:程序博客网 时间:2024/05/15 07:52


二进制加法:

​二进制加法从低位开始逢二进1,比如29+5=34换成2进制就是11101+00101=100010


二进制减法:

对于计算机来说它是只能进行加法运算不能做减法运算的,所以减去一个二进制数就等于加上这个数的负数。

原码:​通过最高位作为符号位的方法来表示一个二进制数的正负,0表示正1表示负;比如

10001和-10001的八位二进制原码分别为00010001和10010001

反码:正数的反码和原码相同,负数的反码保持符号位不变​,其余各位取反即0变1,1变0;比如原码00010001和10010001的反码分别为00010001和11101110

补码:正数的补码和源码相同,负数的补码为先取其反码再在最低位加1;比如​原码00010001和10010001的补码为00010001和11101111

ps:正数的原码,反码,补码都一样,计算机中都是用补码进行计算

则​计算10101-00101(换成十进制是21-5)的步骤就为:先将两个二进制数转换为8位二进制补码的形式

00010101和11111011,然后再将两数相加​,如图一:

图一

因为符号位进位了所以要舍去进位,最终结果为00010000,注意这个结果是补码,还要转换回去,因为这个补码是正数所以原码还是他自己即00010000换成十进制为16

​              

为什么补码的最高位进位可以舍去?

这个和补码的作用有关,他就是为了解决二进制减法符号位进位的问题而出现的。不需要过于纠结其中原理



0 0
原创粉丝点击