Java为何采用补码进行数值运算?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1086个文字,预计阅读时间需要5分钟。
我们主要需要解决的课题就是负数的表示,而众所周知,绝对值相等的两个数互为相反数,和为0。假设我们有正数+0000 0000 0000 1111,那么它的相反数如何表示呢?
一般来说,我们的思路是找一个数,使其与原数的和为0。对于这个例子,我们可以这样思考:
原数:+0000 0000 0000 1111相反数:-0000 0000 0000 1111
这样,原数与相反数的和为0,符合相反数的定义。因此,+0000 0000 0000 1111的相反数是-0000 0000 0000 1111。
我们主要要解决的问题就是负数的表示,而众所周知,绝对值相等的两个正负数之和为0。
假设我们有正数 0000 0000 0000 1111,我们如何表示其相反数呢?一般我们的思路是,找一个数,跟它相加的结果等于0,但是我们发现,要找出一个与它相加后结果等于0的数还是要略加思考一下的(因为要计算进位),所以,为何不找出一个与它相加后结果是1111 1111 1111 1111的数,然后该数+1即是我们所要的答案啦。
于是,很容易的, 0000 0000 0000 1111 + 1111 1111 1111 0000 + 1 = 1111 1111 1111 1111 + 1 = (1)0000 0000 0000 0000
一目了然,1111 1111 1111 0001 就是我们想要的答案了,那么我们是怎么得到这个相反数的呢?
首先,找出一个数与它加起来结果是全1的,这个数便是它的反码,然后这个数再加1,这便是它的相反数了,也是我们说的补码。
我们检验一下0的情况,0000 + 1111 + 1 =(1)0000,其中1111 + 1 = (1)0000 = 0000,即+0和-0的二进制表示均为0000。
本文共计1086个文字,预计阅读时间需要5分钟。
我们主要需要解决的课题就是负数的表示,而众所周知,绝对值相等的两个数互为相反数,和为0。假设我们有正数+0000 0000 0000 1111,那么它的相反数如何表示呢?
一般来说,我们的思路是找一个数,使其与原数的和为0。对于这个例子,我们可以这样思考:
原数:+0000 0000 0000 1111相反数:-0000 0000 0000 1111
这样,原数与相反数的和为0,符合相反数的定义。因此,+0000 0000 0000 1111的相反数是-0000 0000 0000 1111。
我们主要要解决的问题就是负数的表示,而众所周知,绝对值相等的两个正负数之和为0。
假设我们有正数 0000 0000 0000 1111,我们如何表示其相反数呢?一般我们的思路是,找一个数,跟它相加的结果等于0,但是我们发现,要找出一个与它相加后结果等于0的数还是要略加思考一下的(因为要计算进位),所以,为何不找出一个与它相加后结果是1111 1111 1111 1111的数,然后该数+1即是我们所要的答案啦。
于是,很容易的, 0000 0000 0000 1111 + 1111 1111 1111 0000 + 1 = 1111 1111 1111 1111 + 1 = (1)0000 0000 0000 0000
一目了然,1111 1111 1111 0001 就是我们想要的答案了,那么我们是怎么得到这个相反数的呢?
首先,找出一个数与它加起来结果是全1的,这个数便是它的反码,然后这个数再加1,这便是它的相反数了,也是我们说的补码。
我们检验一下0的情况,0000 + 1111 + 1 =(1)0000,其中1111 + 1 = (1)0000 = 0000,即+0和-0的二进制表示均为0000。

