负数的反码问题
3个回答
展开全部
最早的设想是负数就是正数按位取反,但是发现:
+0
=>
00000000
-0
=>
00000000
=>
11111111
两个二进制数表示同一个数,所以浪费了一个编码。于是想到了补码,就是取反之后再加一:
-0
=>
00000000
=>
11111111
=>
(1)00000000这是个九位的,最高位截去,就和+0统一了。
置于二进制数的加法,和十进制是一样的,只是满二进一代替了满十进一
11110011
+
1
10(最低位加一)
10(次低位加)
1(这位就不往前进位了)
依此类推
=11110100
+0
=>
00000000
-0
=>
00000000
=>
11111111
两个二进制数表示同一个数,所以浪费了一个编码。于是想到了补码,就是取反之后再加一:
-0
=>
00000000
=>
11111111
=>
(1)00000000这是个九位的,最高位截去,就和+0统一了。
置于二进制数的加法,和十进制是一样的,只是满二进一代替了满十进一
11110011
+
1
10(最低位加一)
10(次低位加)
1(这位就不往前进位了)
依此类推
=11110100
展开全部
-12的二进制已经知道,符号位不变,其他位求反就是11110011,再加00000001,不就是11110100吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先取得数的反码
然后按位取反
此时得到的是补码(因为在java中是使用补码来表示二进制数据的)
再变为原码就行了
负数的原码就是1xxxxx
第一位是符号位
后面是数值位
然后按位取反
此时得到的是补码(因为在java中是使用补码来表示二进制数据的)
再变为原码就行了
负数的原码就是1xxxxx
第一位是符号位
后面是数值位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询