c语言。0按位取反是1还是-1,1按位取反是0吗?

 我来答
帐号已注销
高粉答主

2018-03-31 · 繁杂信息太多,你要学会辨别
知道大有可为答主
回答量:357
采纳率:100%
帮助的人:6.2万
展开全部

i为int类型 通常占4个字节
0的原码:0000 0000 0000 0000 0000 0000 0000 0000
取反: 1111 1111 1111 1111 1111 1111 1111 1111
最高位是1所以是负数,求其原始数据,方法是
再次取反加1(符号位不变)
取反:     1000 0000 0000 0000 0000 0000 0000 0000
加1          1000 0000 0000 0000 0000 0000 0000 0001
所以是 -1

Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。

补码的规定如下:对正数来说,最高位为0,其余各位代表数值本身(以二进制表示),如+42的补码为00101010。对负数而言,把该数绝对值的补码按位取反,然后对整个数加1,即得该数的补码。如-42的补码为11010110(00101010按位取反11010101+1即11010110)用补码来表示数,0的补码是唯一的,都为00000000。(而在原码,反码表示中,+0和-0的表示是不唯一的,可参见相应的书籍)。而且可以用111111表示-1的补(这也是补码与原码和反码的区别)。

wang06998
2015-07-30 · TA获得超过5659个赞
知道大有可为答主
回答量:3755
采纳率:83%
帮助的人:2465万
展开全部
当然是0和1了。按位取反,“位”字都出来了,当然是二进制,二进制里面有-1吗?
追问
为什么选D不选C
追答
i是int型的0,二进制是32个0,按位取反是32个1也就是
11111111 11111111 11111111 11111111
因为是int型,所以最高位是符号位,1代表符号,同时这是补码形式。要计算原码确认数值
计算补码得到,此二进制形式对应-1

具体计算涉及溢出计算,你就记住有符号数,二进制全1的就是-1就行了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
怪人怪人y
2018-12-13
知道答主
回答量:1
采纳率:0%
帮助的人:790
展开全部
1. 所有正整数的按位取反是其本身+1的负数
2. 所有负整数的按位取反是其本身+1的绝对值
3. 零的按位取反是 -1(0在数学界既不是正数也不是负数)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2019-04-30 · TA获得超过301个赞
知道答主
回答量:14
采纳率:0%
帮助的人:9886
展开全部
0按位取反
假设按8位来做 0000 0000
取反就是 1111 1111
i是int类型的有符号数 最高位为1,是负数,已知负数的二进制求十进制的方法如下
第一步:减一,结果为 1111 1110
第二步:取反,结果为 0000 0001
第三步:二进制转十进制,结果为1
第四步:加负号-1
综上:0按位取反为-1
(严格来说,对于负数,反码是将原码数值位部分按位取反,符号位不变
所以第二步结果为 1000 0001,为了方便理解并没有这么写,所以才有第四步的加负号)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱看的女孩
2015-07-30
知道答主
回答量:5
采纳率:0%
帮助的人:1.7万
展开全部
0按位取反是1 1反过来是0
追问
为什么不选c
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式