c语言里的按位或是怎么算的?

书上说是两个数转二进制后按位取或,可是15|-9不应该是-15吗?为什么执行得-1... 书上说是两个数转二进制后按位取或,可是15|-9不应该是-15吗?为什么执行得-1 展开
 我来答
最大的宝宝
2019-10-27 · TA获得超过828个赞
知道小有建树答主
回答量:1569
采纳率:67%
帮助的人:409万
展开全部
有一个常识需求了解一下。整型数在内存中是以补码形式表示的,如下式:
15 = 00001111
-9 = 11110111‬
-----------------------------
11111111 = (-1)
|是把15和-9两个补码按位作“或”运算,结果是一个全1的数(也是补码形式),从补码知识就知道这个数是-1
更多追问追答
追问
1不是只有末尾是1吗?为什么那么多1也算得1?
追答
这是补码,看来你需要恶补一些知识
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式