C语言进阶(1)·

news2024/11/15 3:59:13

1.数据类型

(1)整形类型有

char   向内存申请1个字节空间,反映char能访问的权限是一个字节,char分为 unsigned char和signed char两种类型在无特殊声明的情况下默认是那种类型取决于编译器(VS是signed char),由于char类型在内存中是以ASSIC码值的形式进行存储,所以被归为整形

short 向内存申请2个字节空间,反映short能访问的权限是2个字节,short分为 unsigned short和signed short两种类型在无特殊声明的情况下默认是signed short。

int 向内存申请4个字节空间,反映sint能访问的权限是4个字节,int分为 unsigned int和signed int两种类型在无特殊声明的情况下默认是signed int。

long向内存申请4/8个字节空间,反映long能访问的权限是2个字节,long分为 unsigned long和signed long两种类型在无特殊声明的情况下默认是signed long。

long long向内存申请8个字节空间,反映long long能访问的权限是2个字节,long long分为 unsigned long long和signed long long两种类型在无特殊声明的情况下默认是signed long long。

 (2)浮点类型

float向内存申请4个字节空间,反映浮点数的不同精度

double向内存申请8个字节空间,反映浮点数的不同精度

(3)构造类型

struct结构体

enum枚举类型

数组‘

union联合类型

(4)指针类型

int* p;

void*p;

(5)空类型

void通常用于函数的返回类型、函数的参数、指针类型。

2.整形的存储

整形在存储中主要是以补码形式进行存储

整形在二进制中有三种表现形式分别是原码,反码,补码,由原码到补码是符号位不变将其他位进行按位取反,然后加一得到补码。

补码相对于其他形式的具有的优势就是补码在计算是将符号位和加减法进行统一,此外,转成补码的进程对于补码转成原码的过程是相同的,避免了进程的占用。

补码在计算机中存储的时候是对补码进行存储,具体是如何存储,存储形式有两种(1)大端存储字节模式(2)小端存储字节模式两种存储方式取决于你的电脑硬件,大端存储字节模式就是将二进制进行高位存储在低地址,低位存储在高地址,在地址中高地址就是地址值大,低地址就是地址值小   ,所以我们就可以知道大端存储字节模式就是将字节存储正向。小端存储字节模式就是将高位存储在高地址,将低位存储在低地址,形成将字节存储反向。

下面写一种如何去判断大端存储和小端存储的代码

#include<stdio.h>
int main()
{
	int a = 9;
	int b = *(char*)&a;
	if (b == 0)
		printf("大端");
	else
		printf("小端");
	return 0;
}

对于unsigned修饰的数据类型是是将其无符号,表现是数据是二进制代码没有符号位(在整形提升是补的是0),全都是数值位,他们都是大于等于0的;signed是第一个是符号位,其他是数值位。对于不同的数据类型中有符号的char根据计算时存储的值范围是-128~127从00000001-01111111(127)-10000000(-128)-11111111(-1)的值进行变化,如果超出数值范围就会指取补码的后面八位,进行截断。

对于无符号的char进行数据范围0-255,如果超出范围根据展现的不同视角转换(是否要如何进行补码转换)如果超出数值范围就会指取补码的后面八位,进行截断。

对于其他数据类型的design和unsigned基本可以和上面进行类推。

下面介绍一些例子

由于-1不在0-255范围中,-1的补码是11111111在unsigned char看来11111111全都是数值位,所以值是255

 

上面%u是以无符号整形的方式进行打印,以无符号整形的角度来看先整形提升为11111111111111111111111111111111,然后再看成无符号全是数值位,得到的结果就是4294967295。

3.浮点数的存储

浮点数在内存中有两种数据类型float和double分别是32个比特和64个比特

浮点数在内存中是以(-1)^S*M*2^E的形式进行转换得到S,M,E的值,将S存储在首位,对于float将后面八位存储E+127转换为二进制后的值,让后去掉M首位的1后面小数点后转换成二进制再存储进后面23位(注意:有一些小数转换成二进制后太长因此造成float的精度是有限的,小数点后转换成的二进制位数注意每位的权重)double是将E+1023转换成二进制存储在后面11位,让后去掉M首位的1后面小数点后转换成二进制再存储进后面52位中。

对于(-1)^S*M*2^E,例如float a=1.5在存储时将其转换成(-1)^0*1.1*2^0其存储是0111111101000000000000000000000

要注意的是E在存储时无符号整数为了防止出现-1不在范围中所以我们就要E+127(或者E+1022)

在我们取出浮点数时是先第一位是1则是负,0则是正,对于E的部分如果不是全1或者全0我们就按照同样的方法转换成(-1)^S*M*2^E的形式然后转换成十进制就得到结果了,例如二进制是    01000010110000000000000000000000由于不是全1或者全0所以转换成(-1)^S*M*2^E的形式,  为(-1)^0*1.10000000000000000000000*2^10000101然后转换为十进制6.5;

如果我们发现E的部分全是0,就说明这个值特别小,我们就要将转换时就将M不补1,还原成0.M的形式

如果E的部分全为1说明小数是一个特别大的数字。

注意:只要大于一个字节的存储都有大小端,因此float和souble在存储时都有大小端

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

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

相关文章

sqli靶场复现(1-7关)

1.sqli-labs第一关&#xff08;字符型注入&#xff09; 1.1判断是否存在sql注入 1.提示你输入数字值的ID作为参数&#xff0c;我们输入?id1 2.在数据库可以查看到users下的对应内容 1.2联合注入 1.首先知道表格有几列&#xff0c;如果报错就是超过列数&#xff0c;如果显示正…

C语言 | Leetcode C语言题解之第319题灯泡开关

题目&#xff1a; 题解&#xff1a; int bulbSwitch(int n) {return sqrt(n 0.5); }

Imatest测试gamma时,不跳出文件保存页面

1.问题背景&#xff1a; 用工具测试灰阶卡gamma时&#xff0c;点击计算后&#xff0c;保存文件的这个页面跳不出来。 2.问题排查&#xff1a; 根据imatest的使用教程检查步骤设置&#xff0c;发现这个红框地方被勾选中&#xff1a; 给它勾掉&#xff0c;然后拉bar选择“20 p…

如何确保精益转型的成果得到长期保持?

近年来&#xff0c;企业纷纷踏上精益转型之路&#xff0c;以求通过优化流程、提升效率、增强竞争力&#xff0c;实现可持续发展。然而&#xff0c;转型易&#xff0c;守成难。如何在精益转型后&#xff0c;确保这些宝贵的成果能够长期保持并持续增值&#xff0c;成为众多企业关…

Python数值计算(20)——自然三次样条曲线

前面介绍到紧固三次样条曲线&#xff0c;这次介绍一下自然三次样条曲线。 1. 数学知识 这个在前面已经做过介绍&#xff0c;这里再次重复说明一遍&#xff0c;它对我们算法实现具有很大的帮助&#xff1a; 同样的&#xff0c;就是各分段起点的函数值&#xff0c;通过上述方程…

Goland Debug大全

记录goland debug过程中遇到的所有问题&#xff0c;有一些是其他博主的总结 1. Debug模式功能 2. 去掉GoLand中的所有断点 调试时点击下图箭标所指的按钮 选中需要删除的断点&#xff0c;点击左上角的减号&#xff0c;然后保存

Java中使用OpenCV生成灰度图

一、下载OpenCV、 下载链接&#xff1a;Releases - OpenCV 下载到指定目录后双击即可安装&#xff08;正常下载过程&#xff09;。 二、查看文件目录 1、找到opencv-4100.jar 找到opencv-4100.jar&#xff0c;这个是我们需要加载的包。 opencv-460.jar是给java操作openvc的程序…

Java所需要的环境以及jdk安装

jvm和跨平台 jvm(java虚拟机):java运行程序的假想计算机,主要用来运行java程序的 跨平台:java代码可以在不同的操作系统上运行(一次编写,到处运行) 跨:跨越 平台:操作系统 -> windows linux mac os 关系:java程序想要在不同的操作系统上运行,实现跨平台,就需要安装不同版本…

C# Unity 面向对象补全计划 七大原则 之 开闭原则(OCP) 难度:☆ 总结:已经写好的就别动它了,多用继承

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识&#xff0c;看不懂没关系 请看专栏&#xff1a;http://t.csdnimg.cn/mIitr&#xff0c;查漏补缺 1.开闭原则&#xff08;OC…

【Python】成功处理`load_boston` has been removed from scikit-learn since version 1.2.

【Python】成功处理load_boston has been removed from scikit-learn since version 1.2. 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主…

文件夹提示无法访问:深入解析与高效恢复策略

在数字化时代&#xff0c;文件夹作为我们存储、整理和保护重要数据的关键容器&#xff0c;其稳定性和可访问性对于个人工作、学习乃至企业运营都至关重要。然而&#xff0c;当您试图访问某个文件夹时&#xff0c;却遭遇“无法访问”的提示&#xff0c;这无疑会给您带来不小的困…

浅谈线程组插件之jp@gc - Stepping Thread Group

浅谈线程组插件之jpgc - Stepping Thread Group jpgc - Stepping Thread Group 是一个高级线程组插件&#xff0c;专为Apache JMeter设计。相较于JMeter自带的基本线程组&#xff0c;此插件提供了更灵活、更精细的用户模拟方式&#xff0c;特别适合于模拟真实用户逐步增加的场…

开关电源之电压的影响因素和指标

开关电源并不是一个简单的小盒子&#xff0c;它相当于有源器件的心脏&#xff0c;不断地为元件提供能量。电源质量的好坏直接影响到元器件的性能。开关电源的设计、制造和质量管理需要精密的电子仪器来模拟电源的实际工作特性&#xff08;即各种规格&#xff09;&#xff0c;经…

5_现有网络模型的使用

教程&#xff1a;现有网络模型的使用及修改_哔哩哔哩_bilibili 官方网址&#xff1a;https://pytorch.org/vision/stable/models.html#classification 初识网络模型 pytorch为我们提供了许多已经构造好的网络模型&#xff0c;我们只要将它们加载进来&#xff0c;就可以直接使…

【CONDA】库冲突解决办法

如今&#xff0c;使用PYTHON作为开发语言时&#xff0c;或多或少都会使用到conda。安装Annaconda时一般都会选择在启动终端时进入conda的base环境。该操作&#xff0c;实际上是在~/.bashrc中添加如下脚本&#xff1a; # >>> conda initialize >>> # !! Cont…

python:YOLO格式数据集图片和标注信息查看器

作者&#xff1a;CSDN _养乐多_ 本文将介绍如何实现一个可视化图片和标签信息的查看器&#xff0c;代码使用python实现。点击下一张和上一张可以切换图片。 文章目录 一、脚本界面二、完整代码 一、脚本界面 界面如下图所示&#xff0c; 二、完整代码 使用代码时&#xff0…

无线WiFi破解原理(超详细)

大家应该都有过这样的经历&#xff0c;就是感觉自己家的无线网怎么感觉好像变慢了&#xff0c;"是不是有人蹭我家网&#xff1f;""还有的时候咱们出门也想试图蹭一下别人家的网"&#xff0c;这里"蹭网"的前提是要破解对方的"无线密码"…

SQL注入复现1-18关

一、联合查询&#xff08;1-4关&#xff09; 首先打开第一关查看源代码&#xff0c;他的闭合方式为 找到闭合方式后&#xff0c;我们就可以使用order by来确定列数 我们可以看到使用order by 4--回车时报错&#xff0c;使用order by 3--时显示&#xff0c;所以我们就得到他得列…

微信丨QQ丨TIM防撤回工具

适用于 Windows 下 PC 版微信/QQ/TIM的防撤回补丁。支持最新版微信/QQ/TIM&#xff0c;其中微信能够选择安装多开功能。微信防撤回信息&#xff01; 「防撤回」来自UC网盘分享https://drive.uc.cn/s/95f9aabbc9684

2024年起重机司机(限桥式起重机)证模拟考试题库及起重机司机(限桥式起重机)理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年起重机司机(限桥式起重机)证模拟考试题库及起重机司机(限桥式起重机)理论考试试题是由安全生产模拟考试一点通提供&#xff0c;起重机司机(限桥式起重机)证模拟考试题库是根据起重机司机(限桥式起重机)最新版教…