首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个小白有关问题,关于补码

2013-10-10 
一个小白问题,关于补码有两个整数,它们在机内的表示:1111111111110100:0000000000001010:求这是哪两个整数

一个小白问题,关于补码
有两个整数,它们在机内的表示:
1111111111110100:
0000000000001010:
求这是哪两个整数的补码?
我个人算的第一个是12,第二个就不知道了。
求指点,求关于原码,反码,补码的简单解释。
[解决办法]
正数的补码是自己。
负数的补码是取反+1。

有了上述理论基础,那么正补码的原码还是补码,负补码可以取反+1获得原码。
[解决办法]

引用:
Quote: 引用:

正数的补码是自己。
负数的补码是取反+1。

有了上述理论基础,那么正补码的原码还是补码,负补码可以取反+1获得原码。

有点明白了,我被教材坑了,教材给的例子是:
(-43)原=1000000000101011
(-43)反=1111111111010100
(-43)补=1111111111010101
害的我还以为所有的补码都是反码+1呢!!!
刚又看了一下教材,在哪一页最低部发现一句:对于正整数而言,其原码、反码、补码均相同。
原本不理解,现在明白了。
谢了版主。


补码只是相对于负数存储来说的,可以google网上多搜点相关理论知识看看,自己再编码练习下
不要太相信教材!当然选一本好的教材也是很重要的!

[解决办法]
你要理解为什么会创造补码。
操作系统的书上应该有解释的。

网易公开课的 《编程范式》第2课有推导这个问题
[解决办法]
概念很重要
[解决办法]
补码本身的定义,就是取反(反码)+1
不过负数用补码表示,正数,0用原码表示,称作补码数,有时也简称补码。

带符号整型数据就是补码数。

原码就是2进制表示本身,无符号数就是原码表示的原码数。

反码就是对源码每位取反的结果,原码 
[解决办法]
反码 =~0 ,即全1
~~a =a  反码的反码是原码
C 语言的 ~ 就是求反码,-a 就是 a的补码,
不过对于补码整数,正数和0 就是它本身,即原码。
负数才是补码。
原码是相对反码,和补码来说的。

所以,补码,到底是什么意思,要看上下文的。
如果是编码的概念,补码就是反码加1.

如果是补码数的概念,就是正数,0 原码表示,负数补码表示的补码数。
PS:
这一般不是教材的问题,而是这个词汇本身就有两重含义。
如果只看到其中一个说法,或者问题很含糊,那么补码的的意义,很容易就把人弄糊涂了。
[解决办法]
先按位取反,再末位加一。

热点排行