数据在内存中的存储(整型篇)

1.辨析原码反码补码:

        1.原码:有32位(int类四个字节,一个字节八个比特位),第一位是符号位,0正1负,其余为二进制位。

        2.计算一般是对原码进行计算,但在负数计算使用原码会导致程序出错,所以负数计算中使用反码,反码就是除了符号位,其余位置取反,反码存在的原因就是负数的计算

        3.虽然有了反码,但遇到负数跨0比如-6+7=1的问题时无法解决,所以产生了补码,补码等于负数的反码加1

2.正整数的原码补码反码都相等,负数的原码正常,反码为第一位不变其余位按位取反,补码位反码加一

3.在整形存储中一般以补码的形式存在,因为这样可以使符号位与数值位统一处理,加法和减肥都可以统一处理(cpu只有加法器),其运算过程是相同的不需要额外硬件

4.大端和小端:超过1字节的数据在存储的时候就会存储顺序的问题,按照不同的存储顺序,分为大端字节序存储和小端字节序存储:

        1.大端模式:数据的低位字节内容保存在内存的高地址处,数据的高位字节内容保存在内存的低地址处

        2.小端模式:低位字节内容保存在内存的低地址处,高位字节内容保持在高地址处

5.大小端存在的原因:

6.判断大小端的方法

7.例题:

析题:在内存中,数据储存首先进行一个截断操作,将变量补码的后八位取出,然后会进行一个还原操作,会用符号位的数值将截断码补成32位,补充之后的码继续作为原码。以‘%d'的形式打印,就是打印一个十进制有符号的整数,而操作对象是变量的补码,a,b两个变量的补码的运算结果为-1,而c的补码首位是0.所以它的补码等于原码等于它本身,所以是255

8.例题2:

析题:内存存储

%u表示打印十进制无符号整型,上表表示了在内存中所有有符号字符型的存储可能(8个字节),可以发现范围是+127到-128,而中间的0000000会自动解析为128,无符号字符型的取值为0到255,

而无符号整型的补码是它自己,直接把128的补码的截断补充的形式打印出来

9.例题3

答案是256,为啥?

析题:

char类型的整型范围有以上规律,是一个闭合的环,而strlen函数就是找\0,而'\0'的asc码值为0,就是找char 0的位置,按照上图正好循环一圈,为255个数

10.例题4

析题:无符号整型也是一个闭环,0-1等于2的33次方-1(2的33次方减1然后加一为2的33次方,但int只能储存2的32次方,所有按照截断方法来看该值就是0),就是所有位都是1然后再减。

11.在强转出现时,应先计算右侧式子,然后再进行强转

12.例题五

析题:

先假设数据的存储是小端类型:

01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00

p1取的是数组的地址,加一代表指针指向了数组最后一个元素的后面,此时指针类型为数组指针,

此时将指针转化为int*型,每次进行运算时移动四个字节,而p1[-1]代表向前移动四个字节,然后读取,为4,而p2的运算,依据11,指向2的同时进行类型转换为int类型,而转换为int类型的同时编译器会读取向后的四位为一个数字2000000,前面的0不读取,然后转换为int*类型然后读取打印,结果为2000000。
 

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

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

相关文章

强化学习(二)——Dueling Network(DQN改进)

与DNQ相比,使用优势函数(A函数)和状态价值函数(V)代替之前的Q(动作价值)函数, 最核心公式为 Q ∗ ( s , a ) A ∗ ( s , a ) V ∗ ( s ) − max ⁡ a A ∗ ( s , a ) Q^*(s,a)A^*(s,a)V^*(s)-\max_a A^*(s,a) Q∗(s,a)A∗(s,a)V…

高效利用内存资源之动态内存管理详解

目录 一、为什么存在动态内存分配 二、动态内存函数的介绍 2.1malloc 2.2free 2.3calloc 2.4realloc 三、常见的动态内存错误 3.1对NULL指针的解引用操作 3.2对动态开辟空间的越界访问 3.3对非动态开辟内存使用free释放 3.4使用free释放一块动态开辟内存的一部分 3.…

Spring Boot 3 集成 Druid 连接池详解

在现代的Java应用中,使用一个高效可靠的数据源是至关重要的。Druid连接池作为一款强大的数据库连接池,提供了丰富的监控和管理功能,成为很多Java项目的首选。本文将详细介绍如何在Spring Boot 3项目中配置数据源,集成Druid连接池&…

【ACM独立出版、确定的ISBN号】第三届密码学、网络安全和通信技术国际会议(CNSCT 2024)

第三届密码学、网络安全和通信技术国际会议(CNSCT 2024) 2024 3rd International Conference on Cryptography, Network Security and Communication Technology 随着互联网和网络应用的不断发展,网络安全在计算机科学中的地位越来越重要&…

Android Kotlin 泛型:强大的类型抽象和重用利器

一、什么是泛型? 泛型是一种参数化类型的机制,它允许我们在定义类、接口和方法时使用类型参数,从而实现代码的重用和类型安全。通过使用泛型,我们可以将类型作为参数传递给类或方法,在不同的场景中实现灵活的类型适配…

精选:免费且高效的邮件营销软件推荐

好用的邮件营销软件可以帮助企业获取客户、维系客户关系。对于有想做邮件营销想法,但是想先试试的企业来讲,免费版邮件营销软件就是个不错的选择。当然,免费的邮件邮件营销软件虽然在价格上有极大的优势,但是功能上会有各种限制。…

Java生态系统最受欢迎的工具类使用指南 ‍

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐 �…

【小白专用】MySQL查询数据库所有表名及表结构其注释

一、先了解下INFORMATION_SCHEMA 1、在MySQL中,把INFORMATION_SCHEMA看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等。在INF…

网络安全——SSH密码攻击实验

一、实验目的要求: 二、实验设备与环境: 三、实验原理: 四、实验步骤:​ 五、实验现象、结果记录及整理: 六、分析讨论与思考题解答: 一、实验目的要求: 1、了解SSH密码攻击、FTP密码攻击…

【BEV感知 EA-LSS 方案】Edge-aware Lift-splat-shot

前言 本文分享LSS方案的改进方案——EA-LSS,它解决了“深度跳变”问题,提出了一个新框架Edge-aware Lift-splat-shot 。 适用于“多视图转BEV”,可以代替原来的LSS模块,并有效地提高了检测精度,而推理时间的增加很少。 在nuScenes测试集上验证,纯相机模型或多模态模型…

Jmeter 请求签名api接口-BeanShell

Jmeter 请求签名api接口-BeanShell 项目签名说明编译扩展jar包jmeter 使用 BeanShell 调用jar包中的签名方法 项目签名说明 有签名算法的api接口本地不好测试,使用BeanShell 扩展jar 包对参数进行签名,接口签名算法使用 sha512Hex 算法。签名的说明如下…

Mybatis是如何进行分页的?

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

Django系列之Celery异步框架+RabbitMQ使用

在Django项目中,如何集成使用Celery框架来完成一些异步任务以及定时任务呢? 1. 安装 pip install celery # celery框架 pip install django-celery-beat # celery定时任务使用 pip install django-celery-results # celery存储结果使用2. Django集成…

gin投票系统3

对应视频v1版本 1.优化登陆接口 将同步改为异步 原login前端代码&#xff1a; <!doctype html> <html lang"en"> <head><meta charset"utf-8"><title>香香编程-投票项目</title> </head> <body> <m…

开关量防抖滤波器(梯形图和SCL源代码)

模拟量防抖超限报警功能块请查看下面文章链接: https://rxxw-control.blog.csdn.net/article/details/133969425https://rxxw-control.blog.csdn.net/article/details/133969425 1、开关量防抖滤波器 2、防抖滤波 3、梯形图代码

useMemo和useCallback

useMemo和useCallback是React中的两个优化性能的钩子&#xff08;Hooks&#xff09;。它们都可以用来缓存计算结果&#xff0c;避免在每次渲染时都重新执行耗时的操作。然而&#xff0c;它们的主要区别在于缓存的内容和使用场景。 useMemo useMemo用于缓存那些计算成本较高的值…

2.Feign使用、上下文隔离及源码阅读

目录 概述使用配置pom.xmlfeign 接口编写controller 测试降级处理pom.xmlapplication.yml代码 Feign如何初始化及调用源码阅读初始化调用 feign的上下文隔离机制源码 结束 概述 阅读此文&#xff0c;可以知晓 feign 使用、上下文隔离及源码阅读。源码涉及两方面&#xff1a;fe…

课后作业7.3.1:构造一个自己的小操作系统

构造一个自己的 mini 操作系统 任务描述 请实现如下功能&#xff1a; 1.写一个命令解释器程序 mysh.c &#xff0c;其功能是接收用户输入的命令并给出反馈。要求该程序既支持内部命令 cd、sync、exit &#xff1b;也支持外部命令&#xff0c;即可以接收 cat、ls 等命令&#x…

数据结构与算法-Rust 版读书笔记-2线性数据结构-双端队列

数据结构与算法-Rust 版读书笔记-2线性数据结构-双端队列 1、双端队列 deque又称为双端队列&#xff0c;双端队列是与队列类似的项的有序集合。deque有两个端部&#xff1a;首端和尾端。deque不同于队列的地方就在于项的添加和删除是不受限制的&#xff0c;既可以从首尾两端添…

vue3封装接口

在src下面创建一个文件夹任意名称 我拿这个名字举例子了apiService 相当于创建一个新的文件 // 封装接口 // apiService.js import axios from axios;// 接口前缀 const API_BASE_URL 前缀;接口后缀export const registerUser async (fileData) > {try {const response …