C语言中负数是以补码的形式进行存储的。
示例:负数-1, (此处,假设是8位二进制表示)
对应正数的原码:0000 0001;
取反: 1111 1110;
加1: 1111 1111;
最终,-1是以1111 1111的形式进行存储的。
理论知识
计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。
- 正整数的补码是其二进制表示,与原码相同;
- 求负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1;