1、计算机里都是以补码的形式存储数据。
2、符号位与数值位
最高位为符号位,其他位均为数值位。正数的符号位是0,负数的符号位是1。
以一个字节的空间为例(即八位二进制):7二进制为00000111
-7的二进制为10000111
3、正数
正数的原码、反码、补码均相同。
4、负数
原码变成反码的规则是符号位不变,其他位取反。
以一个字节的空间为例(即八位二进制):-7的原码为10000111
反码为11111000
而补码则是在反码的基础上加1。
反码为11111000
补码为11111001
5、例题
若int类型数据占两个字节,则以下语句的输出为( )
int k= -1;
printf(''%d,%u\n'',k,k);
A、-1,-1 B、-1,32767 C、-1,32768 D、-1,65535
答案:D
解析:%u为无符号的十进制整数。
一个字节为八位二进制,两个字节为十六位二进制。
-1的原码是 1000 0000 0000 0001
-1的反码是 1111 1111 1111 1110
-1的补码是 1111 1111 1111 1111
计算机里都是以补码的形式存储数据也就是 1111 1111 1111 1111
将其转换为无符号数也就是十进制的整数为65535