C语言中取反是什么意思,为什么要取反,我初学是菜鸟,望高手见谅

数值是以补码表示的,一个正整数的补码和该数的源码相同(即该数的二进制形式),如果数值是负的,就要用补码的形式表示……方法是将该数的绝对值的二进制形式取反再加1

为什么要取法,为什么要加1

这是一个二进制表示的问题。
由于电脑中只有0和1两个符号,且有带符号数和不带符号数。故采用了原码、反码和补码的形式。计算机中采用的是补码的形式。
简单说就是,补码中的0在计算机中有唯一的表示,而实用原码和反码都因为有带符号数和不带符号数的原因使0的表示不唯一。

原码就是原来的那个数的形式。
反码就是对原来的数进行按位取反。既0取1,1取0.如:1011取反就是0100;
补码:1.对于正数,补码是其本身;
2.对于负数,补码是该负数的绝对值的原码按位取反然后加1.如求-7的补码就是先求7的原码为00000111,然后按位取反为11111000,在加1为11111001.

over。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-09
这个是规定,人们发现如果这样定义负数,那么数的加法减法就都可以用加法表示,在计算机中加法的速度最快,这样减法用加负数的办法实现了,降低了成本加快了速度
第2个回答  2008-10-09
因为数据经过那种处理,就可以减法当加法算了
至于为什么好像和二进制的逻辑有关,计算机进行的运算和人的计算方式简直就是天壤之别,这个我现在是没有能力研究啊(太累人了,而且我的IQ好像也不够用)
下面是我问的一个问题,是关于计算机计算加法的
http://zhidao.baidu.com/question/61425998.html
那里面的我写的"溢出"好像不对头,跳过,(∩_∩)
第3个回答  2008-10-09
能得到正确的二进制值的方法而已~~本回答被提问者采纳
第4个回答  2008-10-09
2L说了我想说的——!
相似回答