C语言数据在内存中存储---整型提升练习

news2024/11/25 12:37:14

前言:学习了C语言中的整型提升,总是感觉听的时候很明白,但当自己做题的时候,又总是遗漏了哪一步。自己的感悟:整型提升步骤以及原理都一样,就是把步骤记清楚一步一步的来就行。因此通过下面的一道题来每日复习。

前景回顾:
整型提升:一个表达式中的操作数大小达不到一个整型类型大小的时候需要整型提
升。

下面将对代码进行逐行分析,达到抽丝剥茧的效果。

上代码:

#include <stdio.h>

int main()
{
	unsigned char a = 200;
	unsigned char b = 100;
	unsigned char c = 0;
	c = a + b;
	printf("%d %d", a + b, c);
	return 0;
}

输出:
在这里插入图片描述

分析

1、unsigned char a = 200;
变量a是200,200是个正数,所以a的原码,反码,反码相同:
00000000000000000000000011001000

【重点:】这里需要对a进行截断。
因为a是char类型的数据,只能存放8个bit位的数字。而00000000000000000000000011001000现在是32bit位的数字。所以只截断后8bit位的二进制数。
所以截断后:11001000

同理:

2、unsigned char b = 100;
变量b是100,100是个正数,所以b的原码,反码,反码相同:
00000000000000000000000001100100
同理截断后为:01100100

3、c = a + b;
首先看到需要a+b了。
a和b现在是未满足一个整型数据大小的,所以需要整型提升。
【重点】:整型提升是按照变量的数据类型的符号位来提升的。
记住一句话:对那个变量进行整型提升,就先看这个变量的数据类型。

这里分两种情况:

  • 如果该变量是无符号类型的,高位是有效位,全部补充0即可。
  • 如果该变量是有符号类型的,高位是符号位,需要全部填充符号位。

那现在a、b都是unsigned char,说明都是无符号类型,所以只需要高位只需要全部补充未0即可。(一直补充道32bit位)。

所以:

  • a整型提升后的结果:00000000000000000000000011001000
  • b整型提升后的结果:00000000000000000000000001100100

然后a+b的结果就是:00000000000000000000000100101100

因为变量c也是char类型的数据,所以还需要截断,c存储的就是:00101100。

4、printf(“%d %d”, a + b, c);
可以看到,a+b、c都是以%d的形式打印,所以打印前还需要整型提升。

c现在存储:00101100,c是unsigned char 无符号类型的,高位是有效位,全部用0填充即可。

所以c整型提升后的结果就是:00000000000000000000000000101100。

然后打印c,打印需要根据原码打印,现在00000000000000000000000000101100数补码,但是c是无符号类型的,并且c的高位是0,0表示正数,正数的原码=反码=补码。
所以c的结果转为十进制就是44。

之后再来看a+b的结果,现在a+b的结果并没有存在c变量中。
上面说了a+b的结果是:00000000000000000000000100101100,高位也是0,0表示正数,正数的原码=反码=补码。所以直接将此二进制转为十进制的结果就是:300。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666926.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【正点原子STM32连载】第三十七章 485实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第三…

【Java.SE】数组的定义与使用

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a;Java.SE&#xff0c;本专栏主要讲解运算符&#xff0c;程序逻辑控制&#xff0c;方法的使用&…

【机器学习】十大算法之一 “随机森林”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

Error in `taosdump‘: malloc(): memory corruption: 0x0

在使用taostools的taosdump导出数据时&#xff0c;遇到如下问题&#xff1a; 解决步骤如下&#xff1a; 先看导出目录下的内存是否足够&#xff0c;不够的话&#xff0c;换其他目录导出如果在内存充足的情况下&#xff0c;出现上述问题那么可能是taostools版本不对&#xff0…

Agilent8564EC频谱分析仪

安捷伦8564EC频谱分析仪13145876435 8564EC 是安捷伦的 40 GHz 频谱分析仪。频谱分析仪测量已知和未知信号的频谱功率。频谱分析仪收集信息&#xff0c;例如输入信号与其频率相比的幅度。作为频率分析仪&#xff0c;频谱分析仪的主要用途是记录和分析电输入信号以及其他信号的频…

OWASP之CSRF跨站请求伪造

CSRF&#xff08;Cross-site request forgery&#xff09;跨站请求伪造 文章目录 一、CSRF定义二、CSRF危害三、CSRF漏洞构成1.漏洞风险存在2.用户登录受信任网站A&#xff0c;并在本地生成Cookie3.攻击者伪装数据操作请求的恶意链接或者页面4.诱使未登出用户主动访问或登录恶…

新式茶饮头部品牌「古茗茶饮」联手企企通,打造采购数字化新思路

导读 企企通在采购与供应链领域积累了丰富的项目开发经验&#xff0c;是国内一站式采购数字化管理平台领军企业之一&#xff0c;其售前、商务、项目人员都是这个赛道最专业的。该平台的建设可以自动化处理采购链路多个节点重复性任务&#xff0c;帮助我们提高采购效率&#xf…

向日葵× 实在RPA擦出AI的火花,贝锐与实在智能官宣战略合作

6月19日&#xff0c;实在智能&#xff08;Intelligence Indeed&#xff09;与贝锐&#xff08;Oray&#xff09;正式宣布达成战略合作。实在智能作为国内AI准独角兽企业和超级自动化平台提供商&#xff0c;与国内领先的SaaS远程连接解决方案提供商贝锐的实力“牵手”&#xff0…

基于Python的电影票房爬取与可视化系统的设计与实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

2023年blender渲染显卡推荐

Blender是完全免费的、开源的&#xff0c;而且非常灵活。为了让 Blender 运行良好&#xff0c;有必要找到最好的 GPU。对于希望优化其 3D 建模和渲染体验的 Blender 专业人士和爱好者来说&#xff0c;找到最好的 GPU 是当务之急。GPU 不仅在渲染方面起着至关重要的作用&#xf…

电流驱动和电压驱动有什么区别(高精度电流源)

电流驱动和电压驱动是电子电路设计中常用的两种驱动方式。它们有着各自不同的优缺点&#xff0c;选择不同的驱动方式可以在不同的应用场景中获得更好的效果。 电压驱动&#xff08;Voltage Drive&#xff09;是通过控制电路的输出电压来实现对电路的控制。在电路中&#xff0c;…

软考高级系统架构设计师(四) 计算机网络1

目录 概要 TCP/IP TCP可靠传输的实现&#xff0c;依赖如下机制 ​DNS DHCP 网络规划与设计 逻辑网络设计 物理网络设计 层次化网络设计 网络冗余设计 ​网络存储技术 概要 TCP/IP POP3:邮件收取 SMTP:简单邮件传输协议 DNS:域名与IP地址之间是一对应的 DHCP:主要…

排序算法第一辑——插入排序

思维导图&#xff1a; 一&#xff0c;插入排序 插入排序&#xff0c;一种简单排序中的王者。这种排序算法的过程可以想象成是打牌时摸牌按照顺序插入扑克牌的过程。想想你是如何打牌的&#xff1f;在你拿下一个牌插入时你是不是将手里已经有的牌变得有序了才抽下下一个牌来进行…

电影APP项目(Android+Java+MySQL)

目录&#xff1a; 一、系统架构&#xff1a;二、效果图&#xff1a;1.主页&#xff1a;2.榜单页&#xff1a;3.预告片页&#xff1a;4.动态评论页&#xff1a;5.登录页&#xff1a; 三、数据库设计&#xff1a;四、详细设计&#xff1a;1.主页&#xff1a;2.榜单页&#xff1a;…

【Java-SpringBoot+Vue+MySql】Day2-第一个SpringBoot项目应用

目录 一、初步了解SpringBoot 二、创建第一个SpringBoot项目 三、配置MyBatis数据源 四、创建启动类 五、MVC设计模式 六、SpringBoot整合应用 &#xff08;1&#xff09;创建一个实体类 &#xff08;2&#xff09;创建DAO接口 &#xff08;3&#xff09;创建mapper&#…

AutoSAR系列讲解 - AutoSAR标准文档概览

目录 一、文档下载 二、文档结构 三、文档内容 四、各部分介绍 1、Introduction and functional o 目录 一、文档下载 二、文档结构 三、文档内容 四、各部分介绍 1、Introduction and functional overview 2、Acronyms and abbreviations 3、Related documentati…

MySQL面试题--sql优化的经验

表的设计优化&#xff08;参考阿里开发手册《嵩山版》&#xff09; 比如设置合适的数值&#xff08;tinyint int bigint&#xff09;&#xff0c;要根据实际情况选择 比如设置合适的字符串类型&#xff08;char和varchar&#xff09;char定长效率高&#xff0c;varchar可变…

关于智慧消防建设的探究 安科瑞 许敏

【摘要】随着城市化发展步伐的不断加快&#xff0c;智慧城市的建设已经成为城市发展的重要目标&#xff0c;而智慧消防则是其重要组成部分&#xff0c;不容忽视。基于大数据时代背景下&#xff0c;实现智慧消防建设的时候&#xff0c;更加需要以信息化为导向&#xff0c;这样才…

从零开始 Spring Boot 45:FactoryBean

从零开始 Spring Boot 45&#xff1a;FactoryBean 图源&#xff1a;简书 (jianshu.com) 在前文中我介绍过 FactoryBean&#xff0c;本篇文章会更深入的介绍相关内容。 依赖注入 从一个简单示例开始&#xff0c;我们看使用FactoryBean定义的 Spring Bean 如何注入。 假设我们…

mysql数据库备份和恢复和日志管理

数据库备份和恢复和日志管理 一&#xff1a;数据库备份备份和恢复1.备份分类从物理与逻辑的角度&#xff0c;备份可分为从数据库的备份策略角度&#xff0c;备份可分为 2.常见的备份方法3.MySQL完全备份和恢复分类一&#xff1a;物理冷备份与恢复关闭MySQL数据库使用tar命令直接…