针对二进制储存方式深度解析

int main()
{
    int a[4] = { 1, 2, 3, 4 };
    int* p1 = (int*)(&a + 1);
    int* p2 = (int*)((int)a + 1);
    printf("%x %x", p1[-1], *p2);
    return 0;
}

X86环境下运行

%x打印16进制。

整形指针+1跳过四个字节,((int)a + 1)强制类型转换为整形数字了,这里的(int)a + 1就是数字+1,(int*)((int)a + 1);再强制转换成指针,总的来说就是跳过了一个字节,又根据小端储存的规则,

输出应为02000000(16进制)

 这篇博客里详细讲解了数字在内存储存形式

整数和浮点数在内存中储存的形式-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/bkmoo/article/details/136662463?spm=1001.2014.3001.5502

int main()
{
    int n = 9;
    float* pfloat = (float*)&n;
    printf("n的值:%d\n", n);
    printf("*pfloat的值:%f\n", *pfloat);
    
    *pfloat = 9.0;
    printf("n的值为:%d\n", n);
    printf("*pfloat的值:%f\n", *pfloat);

    return 0;
}

根据整数与浮点数在二进制中储存的方式

int n = 9;
00000000000000000000000000001001(整数二进制储存)
float* pfloat = (float*)&n;
0 00000000 00000000000000000001001
E全为0。E的真实值为-127
无限接近于0

*pfloat = 9.0;
9 = 1001(二进制) = 1.001 * 2 ^ 3
s =- 0, E = 3, M = 1.001
0 10000010 00100000000000000000000(浮点数储存形式)
%d形式打印就是01000001000100000000000000000000

由于浮点型的特性,有些数字无法完全精确储存

因此,有了double(双精度)比float(单精度)精度更高。

无法精确储存会导致一些问题,在两个浮点数比较大小时,直接使用==可能不会出现想要的结果

例如 99.7,这里编译器只能储存接近于它的数而无法精确的储存99.7

直接用if( == 99.7)可能就不会运行。所以在比较时可优化为

if((a - 99.7)<=0.00001 || (a - 99.7) >= -0.00001)

或if ( abs(a - 99.7) <= 0.00001 ) , abs为绝对值函数。

int main()
{
    char a = -128;
    //二进制储存
    //10000000000000000000000010000000原码
    //11111111111111111111111101111111反码
    //11111111111111111111111110000000补码
    //因打印的是无符号整数
    //打印时发生整形提升
    printf("%u", a);//%u打印无符号整数
    return 0;
}

int main()
{
    char a[1000];
    //char,占1个字节,8个bit位
    //-128至127
    int i = 0;
    for (i = 0; i < 1000; i++)
    {
        a[i] = -1 - i;
    }
    //-1 -2 -3 ···-128 127 126 125 ···6 5 4 3 2 1 0 -1···
    //当a = 0时,i = 128+127 = 255
    printf("%d ", strlen(a));
    return 0;
}

在这里为什么a的值是-1 -2 -3 ···-128 127 126 125 ···6 5 4 3 2 1 0 -1···

unsigned char i = 0;

int main()
{
    for (i = 0; i <= 255; i++)
    {
        printf("hello world\n");
    }
    return 0;
}

unsined char无符号char类型,取值范围为0-255

死循环 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【记录 | 基础动态规划】:数字三角形

数字三角形 链接:[USACO1.5] [IOI1994]数字三角形 Number Triangles 题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 在上面的样例中,从 7 → 3 → 8 → 7 →…

python8综合案例

目标&#xff1a; 1 2 代码 文件的内容读取就完成了 数据的封装 就获得了一个日期的总销售额字典、 pingan 健康

3个小技巧,创建高级简历设计

看厌了简历推荐模板平台千篇一律&#xff0c;您有没有考虑过&#xff0c;自己完成一个独特的简历模板制作&#xff1f;为满足大家量身定做的简历需求&#xff0c;与大家分享一个在即时设计中制作简历模板的三个小技巧。 1、复制/粘贴 进入在线设计新时代过后&#xff0c;许多…

AI情报专刊来啦!《“AI换脸”威胁研究与安全策略》

目录 “AI换脸”常见的诈骗套路 1、伪造账号造谣传谣 2、冒充熟人进行诈骗 3、伪造身份申请银行贷款 4、“网络钓鱼”更加难以识别 5、冒充他人远程面试入职 6、冒名登录盗走银行余额 “AI换脸”的产业链 “AI换脸”使用到的技术 人脸识别和关键点检测 图像/视频合成技术 生成对…

Python 一键批量转化 webp格式图片为jpg

网上爬虫批量下载的图片全部都是webp格式的&#xff0c;需要做格式转换&#xff0c;可以是png或者jpg等等 直接上代码&#xff0c;亲测有效&#xff0c;文件路径自定义即可&#xff0c;后面转化完成后&#xff0c;在文件夹内使用类型排序&#xff0c;然后把webp格式的文件删除…

大数据疑难问题2024

问题一&#xff1a; 集群部署一主一备&#xff0c;初始化操作没有问题&#xff0c;有两个namenode,再次重启显示只有node01有namenode 原因&#xff1a;Journalde服务需要在启动启动hdfs和yarn前再次启动 再次启动步骤&#xff1a; 1.启动3台节点的zookeeper&#xff0c;在3…

多点位移计通气管和灌浆管的布置

在现代工程监测中&#xff0c;多点位移计发挥着不可或缺的角色&#xff0c;尤其在跟踪和记录地下位移动态方面。为了确保多点位移计的精确安装和高效运行&#xff0c;合理设计并实施通气管和灌浆管的布置至关重要。本文将详细探讨多点位移计在正向埋设(向下)和反向埋设(向上)情…

C++特性之一:继承

1. 派生类的成员变量、成员函数、构造、析构 2. 继承的切片 3. 重定义/隐藏 重定义/隐藏&#xff1a;派生类和基类有同名的成员&#xff0c;就叫隐藏。派生类的成员隐藏了基类的成员。 隐藏时可以通过类作用限定符来访问被隐藏的成员。 class Person { public:void Print(){…

ChatGPT提示词Prompts

好、不好的问题 好问题&#xff1a;哪种食物对于狗来说是有毒的&#xff1f;不好的问题&#xff1a;狗喜欢吃什么食物&#xff1f; 好问题&#xff1a;如何学习编程&#xff1f;不好的问题&#xff1a;编程难不难 好问题&#xff1a;如何去除衣服上的污渍&#xff1f;不好的问…

[WUSTCTF2020]朴实无华

查看robots.txt 找到/fAke_flagggg.php 显然这是个假的flag&#xff0c;但是我们在header处发现了fl4g.php 近来发现中文全部变成了乱码 插件转成utf8后正常显示 <?php header(Content-type:text/html;charsetutf-8); error_reporting(0); highlight_file(__file__);//leve…

电路维修(双端队列广搜)

达达是来自异世界的魔女&#xff0c;她在漫无目的地四处漂流的时候&#xff0c;遇到了善良的少女翰翰&#xff0c;从而被收留在地球上。 翰翰的家里有一辆飞行车。 有一天飞行车的电路板突然出现了故障&#xff0c;导致无法启动。 电路板的整体结构是一个 R 行 C 列的网格&a…

CSS 背景

CSS 背景 背景颜色 背景颜色若不设置&#xff0c;默认为透明(transparent) background-color: 颜色;背景颜色半透明 background: rgba(0, 0, 0, 0.3)前三个参数设定颜色&#xff0c;最后一个参数&#xff08;例如上述例子中的0.3&#xff09;设定透明度。0&#xff5e;1: 0…

[npm]覆盖依赖中内嵌的依赖的版本

背景&#xff1a; 开发过程中&#xff0c;我的项目中需要使用type/node这个依赖&#xff0c;如下图&#xff1a; type/node中又依赖了一个undici-types的包&#xff0c;如下图&#xff1a; 现在想要升级undici-types的版本&#xff0c;由于type/node官网暂时并没有使用最新版本…

机器学习——过拟合问题、正则化解决法

过拟合的基本概念 欠拟合&#xff1a;假设函数没有很好的拟合训练集数据&#xff0c;也称这个假设函数有高偏差&#xff1b; 过拟合&#xff1a;过拟合也称为高方差。在假设函数中添加高阶多项式&#xff0c;让假设函数几乎能完美的拟合每个样本数据点&#xff0c;这看起来很…

JSONObject在Android Main方法中无法实例化问题

目录 前言一、Main(非安卓环境)方法下运行二、安卓坏境下运行三、why? 前言 原生的json,即org.json.JSONObject; 在Android Studio中的Main方法里运行报错&#xff0c;但在安卓程序运行过程正常 一、Main(非安卓环境)方法下运行 static void test() {try {// 创建一个 JSON …

idea远程服务器debug

前提 本地代码和服务器代码一致 idea中创建远程服务 一般只需要修改ip&#xff0c;注意这边的端口是监听Socket的端口&#xff0c;不是服务的端口 然后把运行参数复制一下 -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 tomcat启动 在tomcat的lib下的c…

爬虫案例2:playwright 超爽体验

参考链接&#xff1a;https://playwright.bootcss.com/python/docs/intro 目标网站&#xff1a;https://spa6.scrape.center/通过观察&#xff0c;页面的信息是通过Ajax请求后返回的信息 下面使用playwright实现绕过token的获取直接拿到返回的数据import asyncio import json f…

【相关问题解答2】bert中文文本摘要代码:结果输出为一些重复的标点符号和数字

【相关问题解答2】bert中文文本摘要代码 写在最前面问题1&#xff1a;tokenizer.py中encode函数&#xff0c;不能使用lower操作关于提问问题描述1一些建议1问题更新2&#xff1a;结果输出为一些重复的标点符号和数字一些建议21. 数据检查和预处理2. 模型和训练配置3. 过拟合和欠…

罐头鱼AI短视频矩阵获客|AI视频批量生成

罐头鱼AI传单功能操作说明&#xff0c;智能化提升您的视频营销效率&#xff01; 在这个信息爆炸的时代&#xff0c;短视频已成为企业营销的重要方式之一。而为了更高效地进行视频营销&#xff0c;罐头鱼AI传单功能应运而生&#xff0c;为您提供全方位的视频管理和发布服务。 首…

华为车控面试前后

个人经历&#xff1a; 秋招未接受其他公司offer&#xff0c;all in华子。 ->秋招失败0 offer 年前被车bu捞后入池开始审批。 ->等待超过1个月&#xff0c;陷入煎熬。 ->终于等到意向书。 分享时间线&#xff1a; 10月 笔试和3面入池2012 1月 收到车bu捞人电话解…