C语言~12 按位取反的结果 是什么?

按位取反就是是把0变成1,1变成0那算下来是不是就是3?... 按位取反就是是把0变成1,1变成0那算下来是不是就是3? 展开
 我来答
Negamax
推荐于2017-11-25 · TA获得超过2723个赞
知道小有建树答主
回答量:656
采纳率:100%
帮助的人:291万
展开全部
详细给你解释下:
12的二进制如下: 00001100
取反后: 11110011 这是一个负数的补码形式,但这是哪个负数的补码呢?
我们先看看负数的补码如何表示的。【负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。】
我们返回去弄:
先把11110011-1=11110010
然后符号位以外取反:10001101
看看除符号外的数:0001101 是13 所以这个数是-13

所以:~12=-13

这是百科上的相关知识点:
【求-7的补码。 】
  因为给定数是负数,则符号位为“1”。
  后七位:-7的原码(10000111)→按位取反(11111000)(负数符号位不变)→加1(11111001)
  所以-7的补码是11111001。
  已知一个数的补码,求原码的操作分两种情况:
  (1)如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
  (2)如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
  再举一个例子:求-64的补码
  +64:01000000
  11000000
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式