千家信息网

C语言有符号数与无符号数怎么表示

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本文小编为大家详细介绍"C语言有符号数与无符号数怎么表示",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言有符号数与无符号数怎么表示"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习
千家信息网最后更新 2025年11月07日C语言有符号数与无符号数怎么表示

本文小编为大家详细介绍"C语言有符号数与无符号数怎么表示",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言有符号数与无符号数怎么表示"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、计算机中的符号位

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

  • 最高位为1,表明这个数为负数

  • 最高位为0,表明这个数为正数

下面看一段代码,用于判断数据的符号:

#include int main(){    char c = -5;    short s = 6;    int i = -7;    printf("%d\n", ( (c & 0x80) != 0 ));    printf("%d\n", ( (s & 0x8000) != 0 ));    printf("%d\n", ( (i & 0x80000000) != 0 ));    return 0;}

下面为输出结果:

这段代码核心思想就是判断最高位为是不是 1,再做逻辑运算,如果为 1,那么运算后就是 1,否则就是 0 。

二、有符号数的表示法

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

  • 正数的补码为正数本身

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

如:

8位整数 5 的补码为:0000 0101

8位整数 -7 的补码为:11111001

16位整数 20 的补码为:0000 0000 0001 0100

16位整数- 13 的补码为:1111 1111 1111 0011

三、无符号数的表示法

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

  • 无符号数默认为正数

  • 无符号数没有符号位

对于固定长度的无符号数

  • MAX_VALUE(所能表示的最大值)+ 1 --> MIN_VALUE(所能表示的最小值)

  • MIN_VALUE - 1 --> MAX_VALUE

四、signed 和 unsigned

  • C 语言中变量默认为有符号的类型

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

注意:C语言中只有整数类型能够声明 unsigned 变量

下面看一段无符号数碰上有符号数的代码:

#include int 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;}

下面为输出结果:

i 为 5,j 为 -10,按理说两者相加应该输出为 i + j < 0,为什么会大于 0 呢?这是因为当无符号数与有符号数混合计算时,会将有符号数转换为无符号数后再进行计算,结果为无符号数。

再来看一个错误使用 unsigned 的例子:

#include int main(){    unsigned int i = 0;    for(i=9; i>=0; i--)    {        printf("i = %u\n", i);    }    return 0;}

下面为部分输出结果:

这是由于 i 为 unsigned 类型,减到 0 后,再减1,就变成了最大值,所以程序就会这样输出。

读到这里,这篇"C语言有符号数与无符号数怎么表示"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

号数 补码 符号 语言 整数 类型 输出 最高 正数 结果 代码 变量 就是 数据 文章 计算机 负数 最大 内容 最大值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 密云区卫星软件开发答疑解惑 广州佰威网络技术有限 获取oracle数据库表记录数 无锡节能软件开发业务 上海辉云互联网络科技有限公司 未来互联网科技对我们的影响 服务器移动app管理 西安网络安全专业大学 软件开发还是实施 网络安全教育英语怎么说 京东软件开发有限公司能去吗 宋应星数据库 不会命令能操作数据库吗 数据库关闭连接用户命令 共筑网络安全主题黑板报 联通邮箱服务器安全类型 广东哇美网络技术有限公司 宝塔安装oracle数据库 fdb数据库文件 交换机服务器和路由器的区别 软件开发一期预算 易语言查线服务器满员 明日之后远星城服务器的长城营地 应对数据库崩溃的方法不包括什么 大学网络安全班会记录 经营项目软件开发包含哪些 华为网络技术网上视频教程 剑网三+技能监控数据库 创维软件开发 朝阳电脑维修北京服务器内存条
0