一个小白有关问题,关于补码
一个小白问题,关于补码有两个整数,它们在机内的表示:1111111111110100:0000000000001010:求这是哪两个整数
一个小白问题,关于补码
有两个整数,它们在机内的表示:
1111111111110100:
0000000000001010:
求这是哪两个整数的补码?
我个人算的第一个是12,第二个就不知道了。
求指点,求关于原码,反码,补码的简单解释。
[解决办法]
正数的补码是自己。
负数的补码是取反+1。
有了上述理论基础,那么正补码的原码还是补码,负补码可以取反+1获得原码。
[解决办法]
补码只是相对于负数存储来说的,可以google网上多搜点相关理论知识看看,自己再编码练习下
不要太相信教材!当然选一本好的教材也是很重要的!
[解决办法]你要理解为什么会创造补码。
操作系统的书上应该有解释的。
网易公开课的 《编程范式》第2课有推导这个问题
[解决办法]概念很重要
[解决办法]补码本身的定义,就是取反(反码)+1
不过负数用补码表示,正数,0用原码表示,称作补码数,有时也简称补码。
带符号整型数据就是补码数。
原码就是2进制表示本身,无符号数就是原码表示的原码数。
反码就是对源码每位取反的结果,原码
[解决办法]反码 =~0 ,即全1
~~a =a 反码的反码是原码
C 语言的 ~ 就是求反码,-a 就是 a的补码,
不过对于补码整数,正数和0 就是它本身,即原码。
负数才是补码。
原码是相对反码,和补码来说的。
所以,补码,到底是什么意思,要看上下文的。
如果是编码的概念,补码就是反码加1.
如果是补码数的概念,就是正数,0 原码表示,负数补码表示的补码数。
PS:
这一般不是教材的问题,而是这个词汇本身就有两重含义。
如果只看到其中一个说法,或者问题很含糊,那么补码的的意义,很容易就把人弄糊涂了。
[解决办法]先按位取反,再末位加一。