C语言基础题:d1=~a的意思不就是按位取反么?不就是把0变1,1变0么?为啥又负数补码还原求原码

C语言基础题:d1=~a的意思不就是按位取反么?不就是把0变1,1变0么?为啥又负数补码还原求原码呢?结果是咋来的啊?... C语言基础题:d1=~a的意思不就是按位取反么?不就是把0变1,1变0么?为啥又负数补码还原求原码呢?结果是咋来的啊? 展开
 我来答
kaixingui2012
推荐于2016-11-27 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6451万
展开全部
~a表示将a按位取反,a是一个变量 , 至少要有1个字节(char),而一个字节有8位!
计算机中存储的整数,都是按补码存放的,规定:正数的补码与原码相同,负数的补码为其原码的反码+1。 所以,当a是负数时,计算~a的结果是要求补码的。

如:
char a=7 ; (00000111)

~a = 11111000
转换成原码为:
反码:11111000 - 1 = 11110111
原码:10001000= -8
更多追问追答
追问

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式