c语言中按位取反-1怎么算

比如-1为10000001按位取反为01111110既然正数补码和源码一样,那么应该输出01111110的十进制数,但是为什么输出0... 比如-1为1000 0001 按位取反为0111 1110
既然正数补码和源码一样,那么应该输出0111 1110的十进制数,但是为什么输出0
展开
 我来答
小星星教育知识分享
高粉答主

2019-11-23 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67130

向TA提问 私信TA
展开全部

c语言中-1的绝对值是1,二进制00000001,取反为11111110,-1为11111111,取反是00000000。

1、所有正整数的按位取反是其本身+1的负数;

2、所有负整数的按位取反是其本身+1的绝对值;

3、零的按位取反是-1(0在数学界既不是正数也不是负数);

0的原码:00000000000000000000000000000000

取反:11111111111111111111111111111111

最高位是1所以是负数,求其原始数据,方法是

再次取反加1(符号位不变)

取反:10000000000000000000000000000000

加110000000000000000000000000000001

所以是-1

扩展资料

C语言按位与运算符(&)

按位与运算将两个运算分量的对应位按位遵照以下规则进行计算:

0&0=0,0&1=0,1&0=0,1&1=1。

即同为1的位,结果为1,否则结果为0。

例如,设3的内部表示为

00000011

5的内部表示为

00000101

则3&5的结果为

00000001

按位与运算有两种典型用法,一是取一个位串信息的某几位,如以下代码截取x的最低7位:x&0177。二是让某变量保留某几位,其余位置0,如以下代码让x只保留最低6位:x=x&077。以上用法都先要设计好一个常数,该常数只有需要的位是1,不需要的位是0。用它与指定的位串信息按位与。

cdyzxy
推荐于2017-11-26 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3585万
展开全部
-1是这样表示的:-1的绝对值是1,二进制0000 0001,取反为1111 1110,加1等于1111 1111,所以-1为1111 1111,这个取反当然是0000 0000
追问
为什么用绝对值表示?每个负的都是按绝对值表示么
追答
这是二进制记录负数的运算公式,就是这样换算的,绝对值取反加1
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haibao268
2014-04-06 · 超过20用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:31万
展开全部
-1补码二另进制是111111111取反为00000000

-1转二进制的方法,1转二进制,取反加1,1的二进制是0000001,取反11111110加1为11111111
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
皇家小快乐
2014-04-06
知道答主
回答量:13
采纳率:0%
帮助的人:5.9万
展开全部
负数的反码符号不变 其他位按位取反
追问
能关于上面给个过程么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
你不懂流氓
2014-04-06
知道答主
回答量:17
采纳率:0%
帮助的人:7.9万
展开全部
你的代码呢?
追问
上面的例子就是啊,主要是怎么解释,这还要代码?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式