其他分享
首页 > 其他分享> > C学习2 有符号与无符号 (狄泰软件学院)

C学习2 有符号与无符号 (狄泰软件学院)

作者:互联网

计算机中的符号位:

数据类型的最高位用于标识数据的符号

最高位为1, 表明这个数为负数    1111 ==> -1

最高位为0, 表明这个数为正数    0001 == > 1

有符号数的表示法:

在计算机内部用补码表示有符号数

正数的补码为正数本身

负数的补码为负数的绝对值各位取反后加1

-5  ==> 反码二进制数 1010 (最高位符号位 1 为 负数) ==> 补码 在反码基础上 +1 1011

5 ==> 补码为本身 0101

无符号数的表示法:

在计算机内部用原码表示无符号数

无符号数默认为正数

无符号数没有符号位

对于固定长度的无符号数

MAX_VALUE + 1 ==>  MIN_VALUE  如char 127+1 ==> -128

MIN_VALUE - 1  ==>  MAX_VALUE  如cahr -128-1 ==> 127

signed 和 unsigned

C语言中变量默认为有符号(signed)的类型

unsigned关键字声明变量为无符号类型

注意:

C语言中只有整形类型能够声明unsigned变量

当无符号数(unsigned)与有符号数(signed)混合比较计算时,会将有符号数转换为无符号数后再进行计算, 结果为无符号数(unsigned)

代码:

#include <stdio.h>

int main()
{

    unsigned int i = 5;
    int j = -10;
    int l = 2;

    printf("%d\n", i+j+l);
    printf("%d\n", (i+j)>0);  //有符号与无符号混合比较运算时,会将有符号隐式转换为无符号,结果也为无符号。

    if( (i + j) > 0 )
    {
        printf("i + j > 0\n");
    }
    else
    {
        printf("i + j <= 0\n");
    }

    return 0;
}

 

 

 

 

标签:符号,int,补码,unsigned,VALUE,printf,软件,狄泰
来源: https://blog.csdn.net/weixin_45712674/article/details/110859415