c语言中负数是按补码存储,怎么读出来哪

储存负数要转换成补码,那输出来又要转换成原码形式?

1、计算机中的负数是以其补码形式存在的 补码=原码取反+1
一个字节有8位 可以表示的数值范围在 -128到+127
用二进制表示也就是 10000000 - 01111111(注意:最高位表示符号)
最高位是1的都是负数 最高位是0的都是正数

2、如-7 原码是 10000111 然后取反(最高位是符合不用取反)得11111000
加一 得11111001 那么-7的二进制数就是 11111001
再如 -10 原码是 10001010 取反得 11110101 加一得 11110110
那么-10的二进制数就是 11110110
二进制数是逢二进一 只有0和1两个数字 没有2
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-07-01
本质是,都是二进制数,或者是十六进制数。
举个例子:
-1,在16位CPU中,用补码表示,则为1111 1111 1111 1111,或者0xFFFF。

在C语言中,如果定义为无符号数,则0xFFFF读出来就是65535,
如果定义为有符号数,则0xFFFF读出来就是-1。

同样的二进制数,类型不同,解释出来的结果也不同。追问

再读出来的时候需要把这时候存储的补码转换成原码吗?

追答

不需要啊,读出来是什么就是什么。

追问

不需要?那负数再读出来就变成一个正数了哦

追答

在C语言里,看你定义的数据类型是有符号(singed)还是无符号(unsigned),
如果是有符号,最高位为1,就变成了负数。
如果是无符号,最高位为2也是正数。

本回答被提问者和网友采纳
第2个回答  2014-07-05
c语言中,正数、负数都是按补码存储。

原码、补码,等等,是计算机里面的东西。
这些,是底层的知识,并不属于高级语言。

c语言,是高级语言。

编程时,使用十进制数,带上正负号(+、-),即可。

编程时,并不用管它是怎么存的,也不用管它的是怎么取的,
更不用管它都是怎么变化的。

这些,就是高级语言的特点。追问

c语音中整型的数是以二进制补码存储的,什么叫不管怎麽存的?

第3个回答  2014-07-01
这个是由编译器控制的
相似回答