php网站安装图解,长春财经学院教务系统,包头做网站,博客园wordpress主题今天学习C语言中的有符号与无符号 文章目录1 计算机中的符号位1.1 有符号数的表示法1.2 无符号数的表示法1.3 signed 和 unsigned2 实验-当有符号数与无符号数进行运算3 错误的使用了unsigned4 总结1 计算机中的符号位
C语言中#xff0c;数据类型的最高位#xff0c;用于标… 今天学习C语言中的有符号与无符号 文章目录1 计算机中的符号位1.1 有符号数的表示法1.2 无符号数的表示法1.3 signed 和 unsigned2 实验-当有符号数与无符号数进行运算3 错误的使用了unsigned4 总结1 计算机中的符号位
C语言中数据类型的最高位用于标识数据的符号。
最高位为1表明这个数为负数最高位为0表明这个数为正数
比如下图 1.1 有符号数的表示法
在计算机内部用补码表示负数
正数的补码为正数本身负数的补码为负数的绝对值各位取反后加1
比如下图中的 1.2 无符号数的表示法
在计算机内部用源码表示无符号数。
无符号数默认为正数无符号数没有符号位
对于固定长度的无符号数有
MAX_VALUE 1 -- MIN_VALUEMIN_VALUE - 1 -- MAX_VALUE
1.3 signed 和 unsigned
在C语言中变量默认为有符号的类型unsigned 关键字声明变量为无符号类型 但是要注意一点只有整数类型intcharlongshort能够声明unsigned变量 2 实验-当有符号数与无符号数进行运算
如下程序的运行代码
#include stdio.hint main()
{
unsigned int i 5;
int j -10;if( (i j) 0 )
{printf(i j 0\n);
}
else
{printf(i j 0\n);
}return 0;
}运行结果将是ij 0 。
因为有符号数与无符号数进行混合运算时会将有符号数转换成无符号数后再进行计算计算结果就变成了无符号数了。所以上述结果为正数
3 错误的使用了unsigned
当错误的使用了下面的方式来写代码的时候会产生错误
#include stdio.hint main()
{unsigned int i 0;for(i9; i0; i--){printf(i %u\n, i);}return 0;
}
上述程序的运行结果为无限循环打印。
因为变量i是无符号数所以i肯定大于等于0上述的for循环会一直循环下去。
4 总结
有符号数用补码表示
正数的符号位为0负数的符号位为1
无符号数用源码表示
无符号数没有符号位无符号数只能用于表示正数以及0
unsigned 只能用于修饰正数类型的变量有符号数与无符号数进行混合运算时会将有符号数转换成无符号数后再进行计算计算结果就变成了无符号数了