计算机补码运算公式,计算机中的补码
计算机中的补码
未分类
献给那些不懂C语⾔,但是仍然坚持备考计算机⼆级的同学们!加油
⾸先,在计算机系统中,数值⼀律⽤补码来表⽰(存储)。主要原因是使⽤补码可以将符号位和其他位统⼀处理;同时,减法也可以按加法来处理。另外,两个⽤补码表⽰的数相加时,如果最⾼位(符号位)有进位,则进位被舍弃。补码跟源码的转换过程⼏乎是相同的。
正数的补码:和原码⼀样
负数的补码:该负数的相反数,为正数的补码为
请牢记此公式
即⼀个负数的补码是 其相反数做取反运算在加1的结果。(这是公式,就这样规定的)
举例1 求负数的补码
型的⼀个数,即int a = -2,其补码,即在计算机中的存储形式计算⽅法如下:
第⼀步 求相反数
-2的相反数是2,,2的32位⼆进制(因为int是32位的)为0 000 0000 0000 0000 0000 0000 0000 0010
第⼆步 取反
取反,即 ~ 2运算,结果为:
(注意:取反运算也会把最⾼位取反):1 111 1111 1111 1111 1111 1111 1111 1101
第三步 加⼀
在加 1,结果为:1 111 1111 1111 1111 1111 1111 1111 1110
所以在计算机中, -2是以1 111 1111 1111 1111 1111 1111 1111 1110这样的形式存储的,即1 111 1111 1111 1111 1111 1111 1111 1110是-2的补码。
好,现在根据公式会求负数的补码了。
那么,给⼀个补码,怎么求其代表的10进制的负数呢?
那就把上⾯的三步倒着来⼀遍不就得到了这个负数的相反数了,那么这个负数不就显⽽易见了,是吧。好,还是不懂,那我们举个例⼦吧!
举例2 求补码所代表的负数
假设⼀个型32位的⼆进制是1 111 1111 1111 1111 1111 1111 1111 1101
明显,其最⾼位是,所以这是⼀个负数。
第⼀步: 减⼀
反执⾏上⾯的第三步,为1 111 1111 1111 1111 1111 1111 1111 1100
第⼆步:取反0 000 0000 0000 0000 0000 0000 0000 0011
第三步:得到了这个数的相反数
⼆进制0 000 0000 0000 0000 0000 0000 0000 0011表⽰的⼗进制是,所以这个负数是啦
补码的最小负数当然,还有其他求补码和补码变⼗进制的⽅法,选择喜欢的理解吧。
现在我们有这个公式,如果让求,那是不是很容易啊,明显
所以请记住这个公式吧。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。