数据在内存中的存储以及百度笔试题

目录

一.整型家族

什么是大小端存储(百度笔试题)

大端字节序存储

小端字节序存储

为什么要讨论大小端字节序存储

写一个程序判断是大端还是小端存储(百度笔试题)

思路:用1去判断,如果返回1则是小端,如果返回0则是大端。

例题1:输出结果:%d打印十进制有符号整型

第二题 %u打印无符号整数

 第三题:

 什么是截断:

 第四题:

 第五题


一.整型家族

  1. char 
    1. unsigned char
    2. sighned char 是否等于char取决于编译器
  2. long 
    1. unsigned long    [int]
    2. sighned long [int] 
  3. short
    1. unsigned short    [int]
    2. sighned char [int] 
  4. int 
    1. unsigned int
    2. sighned  int = int 

二. 构造类型(自定义类型)

  1. 数组类型
  2. 结构体类型 struct
  3. 枚举类型 enum
  4. 联合类型 union

三.指针类型

四.空类型

五. 整数在内存中的存储

  1. 原码
  2. 反码
  3. 补码(内存中存的是补码)

最高位为符号位,其他位为有效位:有符号整型,

 

为什么数据存放在内存中要用补码的形式

什么是大小端存储(百度笔试题)

在内存中可以自定义顺序,但是只有从大到小,或者从小到大最为方便。

其中:

  1. 递增的如11 22 33 44 为大端存储
  2. 递减的如44 33 22 11 为小端存储

 如地址:0x11223344 是十六进制,一位十六进制如1为0001占四个bit空间,11占8个bit空间,所以两个十六进制位占一个字符(8bit)。

大端字节序存储

0x11223344:将高字节如11放在低地址处,低位字 节放在高地址处,为大端存储

小端字节序存储

0x11223344:将低字节如44放在低地址处,高位字节放在高地址处为小端存储

为什么要讨论大小端字节序存储

这是因为,如int型,占4个字节/8个字节,等等需要占多个字节才需要考虑顺序问题。

比如char型只用占一个字节,就不用考虑顺序问题。

 

写一个程序判断是大端还是小端存储(百度笔试题)

思路:用1去判断,如果返回1则是小端,如果返回0则是大端。

将1的二进制补码为0000 0000 ..... 0000 0001,那么它的十六进制为0x00 00 00 01,一个字节8位bit,所以在地址中存储为00 00 00 01,所以如果高地址是 1那么就是小端存储,返回0则是大端存储。 

写法一:

int check_sys()
{int a = 1;char* p = (char*)&a;if (*p == 1)return 1;elsereturn 0;
}int main()
{if(check_sys()==1){printf("小端");}else{printf("大端");}return 0;
}

写法二:

int check_sys()
{int a = 1;if (*(char*)&a == 1)return 1;elsereturn 0;
}int main()
{if(check_sys()==1){printf("小端");}else{printf("大端");}return 0;
}

写法三:

int check_sys()
{int a = 1;return *(char*)&a;
}int main()
{if(check_sys()==1){printf("小端");}else{printf("大端");}return 0;
}

错误写法:这里a已经从内存取出来,a的类型已经成型了,不能在强制类型转换了。

 

例题1:输出结果:%d打印十进制有符号整型

首先:-1的32位二进制位1000 0000 0000 0000 0000 0000 0000 0001

然后:转化为补码:1111 1111 1111 1111 1111 1111 1111 1111

由于是char型,一个字节只有8bit,所以-1为:1111 1111

 由于是char型,打印为%d(是十进制符号整型),所以要整型提升。

 整型提升:由符号位决定

char = -1和signed char -1 ;符号位为1 ;所以将1111 1111 整型提升补1为1111 1111 1111 1111 1111 1111 1111 1111 转化为原码的十进制为-1.

unsigned char -1 整型提升 ,由于是无符号数,所有位数都是有效位,所以最高位用0补位,补位为0000 0000 0000 0000 0000 0000 1111 1111,由于他是无符号数,所以它是正数,所以补码就是原码,所以他是 255

第二题 %u打印无符号整数

第一步:-128;计算机中原码:1000 0000 0000 0000 0000 0000 1000 0000

第二步:补码:1111 1111 1111 1111 1111 1111 1000 0000,所以计算机中只存1000 0000

第三步:由于是char型打印成无符号整型,所以要整型提升,由于char型是有符号所以用符号位1提升1111 1111 1111 1111 1111 1111 1000 0000;

第四步:由于是%u是无符号整型,所以所有位都是有效位,且无符号数原码反码补码相同,所以结果为

 

 第三题:

虽然,char型只能存一个字节即8bit位,但是防不住初始化给你一个大于127的,所以就会发生截断。

128:原码 0000 0000 0000 0000 0000 0000 1000 0000,

          补码 0111 1111 1111 1111 1111 1111 1000 0000

        char只存放:1000 0000

        整型提升:1111 1111 1111 1111 1111 1111 1000 0000

        所以结果和上题一样。

 什么是截断:

例如有符号char一个字节8为字符,其中第一位为符号位;无符号unsigned char 是从0-255,

有符号是从0-127,-127-(-1)。

所以超过127的部分,也等于127。超过255的地方也等于255。

特殊 我们约定有符号 1000 0000,这里1是符号位,但是将补码按位取反加1,后超过8位,所以我们约定1000 0000 为-128.

 第四题:

 i 的原码:1000 0000 0000 0000 0000 0000 0001 0100

补码为 1111 1111 1111 1111 1111 1111 1110 1100

j的,j是无符号整型原码(原反补码都相同):0000 0000 0000 0000 0000 0000 1010 

相加: 0000 0000 0000 0000 0000 0000 1010 

        + 1111 1111 1111 1111 1111 1111 1110 1100


      =   1111 1111 1111 1111 1111 1111 1111 0110

补码为 1000 0000 0000 0000 0000 0000 0000 1001

     =     -10

因为%d为有符号整型,所以要保留最高位为符号位。

 第五题

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

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

相关文章

腾讯云4核8G12M服务器支持多少人在线?

4核8G服务器支持多少人同时在线访问?阿腾云的4核8G服务器可以支持20个访客同时访问,关于4核8G服务器承载量并发数qps计算测评,云服务器上运行程序效率不同支持人数在线人数不同,公网带宽也是影响4核8G服务器并发数的一大因素&…

Open CASCADE学习|曲线向曲面投影

在三维空间中,将曲线向曲面投影通常涉及复杂的几何计算。这个过程可以通过多种方法实现,但最常见的是使用数学和几何库,如OpenCASCADE,来处理这些计算。 在OpenCASCADE中,投影曲线到曲面通常涉及以下步骤:…

elementui 中 el-date-picker 控制选择当前年之前或者之后的年份

文章目录 需求分析 需求 对 el-date-picker控件做出判断控制 分析 给 el-date-picker 组件添加 picker-options 属性&#xff0c;并绑定对应数据 pickerOptions html <el-form-item label"雨量年份&#xff1a;" prop"date"><el-date-picker …

开源模型应用落地-工具使用篇-SLB(二)

一、前言 通过学习"开源模型应用落地"系列文章&#xff0c;我们成功地建立了一个完整可实施的AI交付流程。现在&#xff0c;我们要引入负载均衡&#xff0c;以提高我们的AI服务的性能和故障转移能力。本文将详细介绍如何使用腾讯云的负载均衡技术来将我们的AI服务部署…

洛谷 P1150 Peter 的烟

参考代码and代码解读 #include<iostream> using namespace std; int main() { int n,k,nonu; //n烟的数量&#xff0c;k需要多少根烟头换一支烟&#xff0c;nonu记录烟头的个数 cin>>n>>k; int sumn; //一开始就能吸n支烟 nonusum; …

深度学习之pytorch实现线性回归

度学习之pytorch实现线性回归 pytorch用到的函数torch.nn.Linearn()函数torch.nn.MSELoss()函数torch.optim.SGD() 代码实现结果分析 pytorch用到的函数 torch.nn.Linearn()函数 torch.nn.Linear(in_features, # 输入的神经元个数out_features, # 输出神经元个数biasTrue # 是…

Jlink+OpenOCD+STM32 Vscode 下载和调试环境搭建

对于 Mingw 的安装比较困难&#xff0c;国内的网无法正常在线下载组件&#xff0c; 需要手动下载 x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z 版本的软件包&#xff0c;添加环境变量&#xff0c;并将 mingw32-make.exe 名字改成 make.exe。 对于 OpenOCD&#xff0c;需要…

mysql 2-18

加密与解密函数 其他函数 聚合函数 三者效率 GROUP BY HAVING WHERE和HAVING的区别 子查询 单行子查询和多行子查询 单行比较操作符 多行比较操作符 把平均工资生成的结果当成一个新表 相关子查询 EXISTS 一条数据的存储过程 标识符命名规则 创建数据库 MYSQL的数据类型 创建表…

利用ChatGPT进行数据分析——如何提出一个好的prompt

利用ChatGPT进行数据分析——如何提出一个好的prompt ​ 使用ChatGPT时&#xff0c;能否得到一个好的输出结果&#xff0c;关键在于能否提出好的prompt。 1.1 prompt是什么 ​ 现在大家把向ChatGPT输入的内容称作prompt&#xff08;提示&#xff09;&#xff0c;它的作用是引…

Docker部署Java项目

打包 添加 <!-- 打包插件--> <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins> </build> 通过执行以下命令进…

MySQL数据库基础(九):SQL约束

文章目录 SQL约束 一、主键约束 二、非空约束 三、唯一约束 四、默认值约束 五、外键约束&#xff08;了解&#xff09; 六、总结 SQL约束 一、主键约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含 NULL 值。每个表都应该有…

String为什么是不可变的?

原因一、String字符串类型的数据结构 字符串在String类的内部是用一个char[]数组表示的,而这个数组使用final关键字修饰的&#xff0c;所以不能修改。 举例说明&#xff1a; String ip"127.0.0.1"; String retip.replace(".","#"); System.out.…

BUGKU-WEB 留言板1

题目描述 题目截图如下&#xff1a; 进入场景看看&#xff1a; 解题思路 之间写过一题类似的&#xff0c;所以这题应该是有什么不同的那就按照之前的思路进行测试试试提示说&#xff1a;需要xss平台接收flag&#xff0c;这个和之前说的提示一样 相关工具 xss平台&#xf…

银河麒麟操作系统自动同步时间更新

1、银河麒麟操作系统基于Centos8的&#xff0c;因centos8取消了ntp服务器&#xff0c;所以导致之前使用ntpdate命令无法同步时间 2、centos默认使用chrony模块来进行同步时间 3、修改chrony配置同步时间服务器 vim /etc/chrony.conf 4、目前使用的是阿里云的时间服务器&…

深入浅出熟悉OpenAI最新大作Sora文生视频大模型

蠢蠢欲动&#xff0c;惴惴不安&#xff0c;朋友们我又来了&#xff0c;这个春节真的过的是像过山车&#xff0c;Gemini1.5 PRO还没过劲&#xff0c;OpenAI又放大招&#xff0c;人类真的要认输了吗&#xff0c;让我忍不住想要再探究竟&#xff0c;到底是什么让文生视频发生了质的…

流星蝴蝶剑之七夜听雪中文版下载

软件介绍&#xff1a; 中文名称: 流星蝴蝶剑七夜听雪 英文名称: Meteor 游戏类型: 3D武侠格斗 发行时间: 2002年08月 制作发行: 流星江湖悠悠客栈 语言 :中文 配置要求: 操作系统&#xff1a;Windows 95 / 98 / Me / 2000 / XP 最低配置 CPU&#xff1a;Pentium II 450MHz 以上…

单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法(matlab代码)

目录 1 主要内容 目标函数 电动汽车负荷建模 算例系统图 程序亮点 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现博士文章《互动环境下分布式电源与电动汽车充电站的优化配置方法研究》第五章《单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法》…

0206-1-网络层

第 4 章 网络层 网络层提供的两种服务 虚电路服务 数据报服务 概要: 虚电路服务与数据报服务的对比 网际协议 IP 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有四个协议&#xff1a; 地址解析协议 ARP (Address Resolution Protocol)逆地…

【鸿蒙系统学习笔记】TypeScript开发语言

一、背景 HarmonyOS 应用的主要开发语言是 ArkTS&#xff0c;它由 TypeScript&#xff08;简称TS&#xff09;扩展而来&#xff0c;在继承TypeScript语法的基础上进行了一系列优化&#xff0c;使开发者能够以更简洁、更自然的方式开发应用。值得注意的是&#xff0c;TypeScrip…