1.计算机中的符号位,计算机如何表示正数和负数?
数据类型的最高位用于标识数据的符号
最高位为1,表明这个数为负数
最高位为0,表明这个数为正数
2.有符号数的表示法
在计算机内部用补码表示有符号数
正数的补码为正数本身
负数的补码为负数的绝对值各位取反后加1,即反码加1
对int最高位的问题感兴趣可以看一下这篇文章:神奇的-2147483648
如:
8位整数5的补码为:0000 0101
8位整数-7的补码为:1111 1001
16位整数20的补码为: 0000 0000 0001 0100
16位整数-13的补码为:1111 1111 1111 0011
以-7为例
7的二进制为 0000 0111
反码为 1111 1000
补码为 1111 1001
所以-7的补码就是1111 1001
3.实验
判断最高位,运算结果如果不等于0就是负数,等于0就是正数。
因为计算机内最高位为0是正数,1是负数。
#include "stdio.h"
int main()
{
char i = -5;
short j =5;
int k = -1;
printf