C语言分析数据在内存中的存储一:(整形在内存中的存储)

news2024/9/30 9:34:37

数据类型介绍

我们知道C语言有很多内置类型:

char     //字符数据类型  1 个字节

short    //短整型        2 个字节

int      //整形          4 个字节

long     //长整形        4 个字节

long long //更长的整形   8 个字节

float    //单精度浮点数  4 个字节

double  //双精度浮点数   8 个字节

 以及他们的存储空间大小。如果把他们归类:

数据归类

 有人会说为什么 char 也是整形家族的,因为字符在内存存储的是ASCLL值,ASCLL值是整形

通常来说 int  一般就是  signed int  有符号的整数,但是 char 没有规定有无符号,但是大部分都是有符号的。(整形家族还有long long 只是没在图上写出来了)

这里都只简单列举了几个,我们重点要说的是整形在内存中的存储

 整形在内存中的存储

我们知道变量是需要在内存中创造空间的,空间的大小根据类型定,所以数据在内存中到底是怎么存储的呢?

原码,反码,补码

之前我们讲过,整形在内存中存储的都是二进制的形式,分为无符号和有符号的整形类型

有符号的最左边的一位是符号位,0是整数,1是负数。无符号的没有符号位全是有效位。

类如:

 有符号的 int 整形 a 在内存中就是 00000000 00000000 00000000 00001010,因为 int 是4个字节,就是32个比特位,图片里是16进值的表现形式而已方便看(二进制变成16进值,4个比特位表示一个16进值位),我们看看负数的:

 负数 b 应该是 10000000 00000000 00000000 00001010啊,为什么是这样的,因为在内存中存储的是补码,而刚刚的是原码,在前面操作符的时候讲过,补码等于原码取反加1,原码取反就是反码(取反符号位不变)。b在内存中应该是 11111111 11111111 11111111 11110110。换成16进值刚刚好。正数的原码,反码,补码都相同。只有负数需要计算。

如果是无符号的是什么样的:

 答案是无符号的存储还是一样的,只是最左边的没有符号位了。

我们看到内存中存储的顺序好像不太一样,这是因为大小端存储模式的原因,后面会讲。

典型列子(解题思路)

有无符号的整形提升与截断:

一:输出什么?

 这里就需要整形提升,答案是:

 分析:-1的原码是 10000000 00000000 00000000 00000001   

补码是 11111111 11111111 11111111 11111111,因为是 char 形,1个字节,要截断为8个位,所以从右边开始截断为 11111111,%d 是打印有符号的,所以先整形提升,整形提升如果是有符号的,补符号位的数字,所以是1,整形提升之后为 11111111 11111111 11111111 11111111,%d打印都当有符号处理,所以负数转为原码,又是取反加1,变为-1。这就是 char a 的分析与 b 是相同的。为什么 c 不一样,因为无符号整形提升是补0的,所以 c 整形提升后是 00000000 00000000 00000000 11111111,打印一看符号位不是1,就是正数了,正数原码,补码都一样,所以是255。

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

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

相关文章

Linux学习记录(十三)----信号

文章目录 6.信号1.信号的发送(发送信号进程)kill:raise:alarm : 2.信号的接收3.信号的处理信号父子进程间通信 7.信号灯(semaphore)创建信号灯函数控制信号灯函数PV操作 声明:本人撰写的为学习笔记内容来源于网络,如有侵权联系删除…

SQL Server中如何自动抓取阻塞

背景 当发数据库生阻塞时,可以通过SQL语句来获取当前阻塞的会话情况,可以得到下面的信息 说明:会话55阻塞了会话53。两个会话都执行了update test set fid10 where fid0。 但我们也经常碰到客户生产环境出现阻塞,由于不会抓取或者…

YOLOv8实现任意目录下命令行训练

问题 当你使用YOLOv8命令行训练模型的时候,如果当前执行的目录下没有相关的预训练模型文件,YOLOv8就会自动下载模型权重文件。这个是一个正常操作,但是你还会发现,当你在参数model中指定已有的,在其他目录下的预训练模…

实际案例:某日化集团主数据建设项目

一、建设背景1. 背景分析当前,该日化企业集团的主数据尚处于分散状态,分布于各业务系统中,缺乏一套专业的主数据管理系统进行统一管理。因此,数据无法在全集团范围内共享使用,且在业务端到端的流程拉通时,数…

WPS关闭后,进程依然在后台运行的解决办法

问题 wps启动后 在启动wps后,什么都不做,打开进程管理器,发现居然运行了3个wps进程: win10只会显示wps进程: win11显示比较准确: 关闭后 在关闭wps,再去任务管理器查看,发现在…

游戏开发设计模式之策略模式

目录 策略模式在游戏开发中的具体应用案例有哪些? 如何在Unity中实现策略模式以优化角色行为和AI策略? 策略模式与其他设计模式(如观察者模式、状态模式)在游戏开发中的比较优势是什么? 策略模式的优势 观察者模式…

基于SpringBoot的闲一品交易平台

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:SpringBoot框架 Java技术 工具:IDEA/Eclipse、Navicat、Maven 系统展示 首页 管理员…

【手撕OJ题】——160. 相交链表

目录 🕒 题目⌛ 方法① - 遍历记录链表长度⌛ 方法② - 双指针 🕒 题目 🔎 160. 相交链表【难度:简单🟢】 🔎 面试题 02.07. 链表相交 🔎 剑指 Offer 52. 两个链表的第一个公共节点 给你两个单…

hadoop集成spark(spark on yarn)

文章目录 hadoop集成spark(spark on yarn)下载spark软件包spark文件设置spark-env.shworkers 环境变量设置发送spark到其余机器启动spark hadoop集成spark(spark on yarn) 在hadoop搭建完成的前提下,集成spark&#x…

【面试题系列Vue02】Vue Router 路由都有哪些模式?各模式之间有什么区别?

官方解析 Vue Router 路由有三种模式: hash 模式:使⽤ URL 中的 hash(即 # 后面的内容)来作为路由路径。 在这种模式下,页面不会重新加载,只会更新 hash 值,并触发路由变化,从而渲…

c语言杂谈系列:模拟虚函数

从整体来看&#xff0c;笔者的做法与之前的模拟多态十分相似&#xff0c;毕竟c多态的实现与虚函数密切相关 废话少说&#xff0c;see my code&#xff1a; kernel.c#include "kernel.h" #include <stdio.h>void shape_draw(struct shape_t* obj) {/* Call dr…

气膜粮仓:卓越的抗风雪能力与高性能材料—轻空间

在粮食储存领域&#xff0c;气膜粮仓以其卓越的抗风雪能力和高性能材料成为了现代农业的首选。其独特的设计和先进的材料使其在各种极端天气条件下依然能够保证粮食的安全和品质。 强抗风雪能力&#xff0c;保障粮仓安全 气膜粮仓采用了创新的结构设计&#xff0c;能够有效抵御…

Selenium + Python 自动化测试19(补充-读取各种文件数据操作)

我们的目标是&#xff1a;按照这一套资料学习下来&#xff0c;大家可以独立完成自动化测试的任务。 上一篇我们讨论了数据驱动测试中如何完成重复的测试实例&#xff0c;今天我们补充一些读取各种文件的方法。 本篇文章我们讨论一下如何使用读取txt、CSV、Excel文件&#xff0…

burpsuite xssValidator插件(xss插件)

安装 1. 商城安装插件 2. 安装环境 Download PhantomJShttps://phantomjs.org/download.htmlGitHub - NetSPI/xssValidator: This is a burp intruder extender that is designed for automation and validation of XSS

halcon1

Halcon安装&#xff1a;halcon介绍&#xff1a; 德国MVtec公司开发的一套完善的标准的机器视觉算法包。底层功能算法多&#xff0c;运算性能快。halcon不能提供相应的界面编程需求&#xff0c;需要和vs一起才能构成一套完整软件。 软件界面 halcon数据类型 Halcon的数据类型主…

Hugo博客搭建

Hugo 构建 Hugo 安装 下载 安装包hugo version 查看是否安装成功 生成站点基础框架 进入自己指定文件夹下执行 hugo new site solejay-blog创建仓库 cd solejay-blog git init主题配置 进入 Hugo 主题页面 选择主题并下载 个人喜欢的主题&#xff1a;meme、newsroom、gal…

mac安装java17(jdk17)

1. 下载jdk17 官网下载&#xff1a;https://www.oracle.com/java/technologies/downloads 2. 直接安装 安装完后目录会存放在下面目录下 /Library/Java/JavaVirtualMachines 111111deMBP JavaVirtualMachines % ls jdk-11.0.227 jdk-17.jdk 3. 如果你已经安装过java&#…

【MobaXterm】查找输出结果的关键字

要求&#xff1a; 在MobaXterm终端的输出结果 查找关键字 解决&#xff1a; 菜单栏终端->在终端中查找 Terminal -> Find in terminal

智慧水务项目(七)vscode 远程连接ubuntu 20.04 服务器,调试pyscada,踩坑多多

一、说明 以前用过pycharm&#xff0c;远程连接还可以&#xff0c;但是vscode用以前还可以&#xff0c;就用它开发python了&#xff0c;想搞个远程&#xff0c;源码直接放服务器上&#xff0c;能远程调试&#xff0c;其实也很方便的&#xff0c;结果第一次还成功了&#xff0c;…

【机器翻译方向】数据集合集!

本文将为您介绍经典、热门的数据集&#xff0c;希望对您在选择适合的数据集时有所帮助。 1 QUAK 发布方&#xff1a; Upstage高丽大学 发布时间&#xff1a; 2022 韩英合成机器翻译质量预测数据 (韩英神经机器翻译的一个合成质量估计数据集&#xff0c;QUAK) 是指韩语句子和…