数据类型及sizeof,进制转换

其实数据类型可以讲很多内容,这里看情况需要讲多久吧。

本篇基本都是理论。

目录

数据类型的分类

基本数据类型

构造数据类型

指针类型

空类型

计算数据类型或变量所占用的内存字节数

基本语法

进制转换

二进制

二进制的概念

二进制与十进制的转换

十六进制

十六进制的概念

二进制与十六进制的转换

小结


数据类型的分类

在灵气运转的变量详解(下)和scanf法术中我们第一次提到了数据类型这个概念,数据类型是定义变量或函数的存储类型和操作方式。

数据类型可以简单的分为以下四类。

基本数据类型

整数类型

在计算机中最小的存储单位是位(bit),而一个字节(byte)通常由8个二进制位组成。每个二进制位可以表示0或1。

前文中我们常常提到的int就是整型,如果按从小到大来的话:

  • char : 通常占用 1 个字节(8bit)内存空间。它既能存储字符,也能存储小整数。字符在计算机中以 ASCII 码形式存储,如
#include <stdio.h>
int main() {char a = 'A';printf("ASCII码值: %d\n", a);return 0;
}

 这里输出的结果是65,因为A的ASCII码值就是65。

ASCII是一种基于7位二进制编码的字符编码系统,主要用于表示英文字母、数字、标点符号和控制字符等,总共可以表示128个不同的字符‌。

图源网络,侵权删 

  • short : 短整型,一般占 2 个字节
  • int : 整型,在多数系统中占 4 个字节
  • long : 长整型,在 32 位系统通常占 4 个字节,64 位系统一般占 8 个字节
  • long long : 更长的长整型,至少占 8 个字节

浮点类型

  • float :单精度浮点型,占 4 个字节,精度约为 6 - 7 位有效数字,用于存储小数
  • double :双精度浮点型,占 8 个字节,精度约为 15 - 16 位有效数字,比float更精确
  • long double :长双精度浮点型,占用字节数因编译器和系统而异,精度比double更高

构造数据类型

构造数据类型由基本数据类型其他构造数据类型组合而成。

  • 数组 :一组相同类型元素的有序集合,元素在内存中连续存储
  • 结构体 :用户自定义的数据类型,可包含不同类型的数据成员,将相关数据组合在一起
  • 联合体 :所有成员共享同一块内存空间,同一时间只能使用一个成员
  • 枚举类型 :定义一组命名的整数常量,增强代码可读性

指针类型

这个之后会详细讲到有关于指针的。

  • 指针存储的是变量的内存地址,通过指针可直接访问和修改内存中的数据

空类型

void表示,有以下用途:

  • 函数返回值为空:函数不需要返回值时,使用void作为返回类型
  • 函数参数为空:函数不接受参数时,使用void作为参数列表
  • 通用指针:void *类型指针可指向任意类型数据,使用时需强制类型转换

计算数据类型或变量所占用的内存字节数

sizeof用于计算数据类型或变量所占用的内存字节数。

基本语法

计算数据类型的大小

sizeof(数据类型);

如:

#include <stdio.h>int main() {printf("sizeof(int)= %ld\n", sizeof(int));return 0;
}

输出的结果为⬇️

可能有些人的程序输出的结果不是4,那是因为有的是64位机有的是32位机。

  • 32位:是计算机处理器(CPU)能够一次处理或传输的数据宽度为32位
  • 64位:是计算机处理器(CPU)能够一次处理或传输的数据宽度为64位

进制转换

上文讲了位,存储等。我们来学习下进制的转换:

在日常生活里,十进制是最为常用的计数方式,不过在计算机领域,二进制和十六进制是比较常见的。下面来学习二进制、十进制、十六进制这三个进制之间的转换。

二进制

二进制的概念

  • 在计算机中,二进制用于表示数据和指令。二进制只有0和1两个数码,代表的是电子元件的开和关的两种状态。进位规则是 “逢二进一”,借位规则是 “借一当二”。

二进制与十进制的转换

二进制 -> 十进制

  • 将二进制数的每一位乘以2的相应幂次(幂次从右往左依次为0、1、2... ...),然后将结果相加。这次常用的逐位相加法。
  • B是二进制的英文缩写,D是十进制的英文缩写

如,11010B -> D

= 0 * 2^0 + 1 * 2^1 + 0 * 2^3 + 1 * 2^4 + 1 * 2^5 

= 0 + 2 + 0 + 8 + 16

= 26

十进制 -> 二进制

  • 把十进制转换为二进制可以采取除2取余的方法,简单来说就是:除二取余直至商0。再将余数倒序排列就得到对应的十进制数。

如,26D -> B

  1. 26 / 2 = 13,余为0
  2. 13 / 2 = 6,余为1
  3. 6 / 2 = 3,余为0
  4. 3 / 2 = 1,余为1
  5. 1 / 2 = 0,余为1

然后将余数从下向上排得到11010B。

十六进制

十六进制的概念

  • 十六进制是一种基数为16的计数系统,它使用 0 - 9 十个数字和 A - F六个字母来表示 10 - 15 这六个数字
  • 十六进制在计算机领域常用于表示内存地址、颜色值等。它可以很方便与二进制进行转换,每4位二进制数可以用1位十六进制表示

二进制与十六进制的转换

二进制 -> 十六进制

  • 从二进制数的最右边(低位)开始,每4位分为一组。如果最左边(高位)的一组不足4位,则在左边补0
  • 将二进制转十六进制,组合结果
  • 十六进制可以用H表示

如,11010B -> H

  1. 分组,0001和1010
  2. 0001B转换为十进制为1,在十六进制中对应的是1;1010B转换为10,在十六进制中,10为A
  3. 组合结果为1A

十六进制 -> 二进制

  • 拆分十六进制数
  • 将每个十六进制数字转换为4位二进制数
  • 组合二进制数

如1A H -> B

  1. 拆分为1和A
  2. 1对应的二进制是0001,A对应的十进制是10,对应的二进制是1010
  3. 组合0001 1010,一般省略前面的0
  4. 结果为11010

小结

系统的学习了计算机的数据类型以及sizeof运算符;还有二进制、十六进制,以及这些进制之间的转换。

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

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

相关文章

网络安全之tcpdump工具

引言 wireshark是一款非常不错的抓包软件&#xff0c;在图形化界面占绝对统治地位&#xff1b;尽管其在字符界面下有些许选项可供使用&#xff0c;但终究不太方便&#xff0c;下面我再介绍一款NB的终端抓包工具 tcpdump 1、混杂模式 linux的网卡有混杂模式一说&#xff0c;当开…

建筑管理(2): 施工承包模式,工程监理,质量监督

文章目录 一. 施工承包模式1. 施工总承包模式1.1 施工总承包的特点1.2 施工总承包模式中的承包方 2. 平行承包模式3. 联合体与合作体承包模式 二. 工程监理1. 强制实行监理的工程范围1.1 国家重点建设工程1.2 大中型公用事业工程(重点)1.3 成片开发建设的住宅小区工程1.4 必须实…

[LeetCode热门100题]|137,260,268,面试17.19

1、137 只出现一次数字|| 1、题目描述 137 只出现一次数字||https://leetcode.cn/problems/single-number-ii/description/ 给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你…

MySQL中有哪几种锁?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL中有哪几种锁&#xff1f;】面试题。希望对大家有帮助&#xff1b; MySQL中有哪几种锁&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在MySQL中&#xff0c;锁是用来控制并发访问的机制&#xff0c;确…

外贸企业可以申请网络专线吗?

在对外业务不断扩大的情况下&#xff0c;外贸企业对网络的需求愈发迫切。稳定、快速的网络连接不仅是企业开展国际业务的基础&#xff0c;更是提升竞争力的关键。外贸企业是否可以申请网络专线&#xff1f;如何选择适合的外贸网络专线服务&#xff1f;本文将为您详细解答。 网络…

python笔记2

变量&#xff1a;含义 一个容器&#xff0c;计算机当中的存储空间。 可以理解为一个用于标识或引用数据的名字或标签。 作用&#xff1a; 可以通过定义一个变量来给需要使用多次的数据命名&#xff0c;就像一个标签一样。下次需要使用这个数据时&#xff0c;只需要通过这个变…

【算法】动态规划

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 持续更新中...1、常规动态规划Fibonacci数列杨辉三角最小花费爬楼梯孩子们的游戏 2、背包问题3、最长公共子序列4、最长递增子序列…

ECU BootLoader开发——Flash编程

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 简单&#xff0c;单纯&#xff0c;喜欢独处&#xff0c;独来独往&#xff0c;不易合同频过着接地气的生活…

NetLink内核套接字案例分析

一、基础知识 Netlink 是 Linux 系统中一种内核与用户空间通信的高效机制&#xff0c;而 Netlink 消息是这种通信的核心载体。它允许用户态程序&#xff08;如网络配置工具、监控工具&#xff09;与内核子系统&#xff08;如网络协议栈、设备驱动&#xff09;交换数据&#xff…

Linux 配置静态 IP

一、简介 在 Linux CentOS 系统中默认动态分配 IP 地址&#xff0c;每次启动虚拟机服务都是不一样的 IP&#xff0c;因此要配置静态 IP 地址避免每次都发生变化&#xff0c;下面将介绍配置静态 IP 的详细步骤。 首先先理解一下动态 IP 和静态 IP 的概念&#xff1a; 动态 IP…

开源:LMDB 操作工具:lmcmd

目录 什么是 LMDB为什么编写 lmcmd安装方法如何使用 连接数据库命令列表 小结 1. 什么是 LMDB LMDB&#xff08;Lightning Memory-Mapped Database&#xff09;是一种高效的键值存储数据库&#xff0c;基于内存映射&#xff08;memory-mapping&#xff09;技术&#xff0c;提供…

进程管理:前后台切换

前后台切换 [rootxxx ~]# yum install -y xclock #安装xclock&#xff08;这里是用来解释前后台&#xff09; [rootxxx ~]# xclock -update 1 #前台运行&#xff08;如果把1改成2&#xff0c;就是秒针两秒走动一次&#xff09; [rootxxx ~]# xclock -update 1…

【CF】Day6——Codeforces Round 942 (Div. 2) BC + Codeforces Round 941 (Div. 2) C

B. Coin Games 题目&#xff1a; 思路&#xff1a; 虽然标签是博弈论&#xff0c;但我感觉更像一个找规律的思维题 由于题目告诉我们每次只能选U&#xff0c;那我们不妨来考虑选U会造成什么情况&#xff08;以下都为选中间U&#xff09; ①.UUU -3*U 此时选了U会导致两侧…

视频推拉流EasyDSS案例分析:互联网直播/点播技术与平台创新应用

随着互联网技术的快速发展&#xff0c;直播/点播平台已成为信息传播和娱乐的重要载体。特别是在电视购物领域&#xff0c;互联网直播/点播平台与技术的应用&#xff0c;不仅为用户带来了全新的购物体验&#xff0c;也为商家提供了更广阔的营销渠道。传统媒体再一次切实感受到了…

鸿蒙初级考试备忘

Module类型 Module按照使用场景可以分为两种类型&#xff1a; Ability类型的Module&#xff1a; 用于实现应用的功能和特性。每一个Ability类型的Module编译后&#xff0c;会生成一个以.hap为后缀的文件&#xff0c;我们称其为HAP&#xff08;Harmony Ability Package&#x…

【QT】文件系统相关 -- QFile

一、Qt 文件概述 &#x1f525; 文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库&#xff0c;提供了跨平台的文件操作能力。Qt 提供了很多关于⽂件的类&#xff0c;通过这些类能够对文件系统进行操作&#xff0c;如文件读写、文件信息获取、文件制或重命名等 二、输…

EasyCVR安防视频汇聚平台助力工业园区构建“感、存、知、用”一体化智能监管体系

在现代工业园区的安全管理和高效运营中&#xff0c;视频监控系统扮演着不可或缺的角色。然而&#xff0c;随着园区规模的扩大和业务的复杂化&#xff0c;传统的视频监控系统面临着诸多挑战&#xff0c;如设备众多难以统一管理、数据存储分散、智能分析能力不足、信息利用率低下…

鸿蒙路由 HMrouter 配置及使用一

1、学习链接 HMRouter地址 https://gitee.com/hadss/hmrouter/blob/dev/HMRouterLibrary/README.md 2、工程配置 下载安装 ohpm install hadss/hmrouter 添加编译插件配置 在工程目录下的build-profile.json5中&#xff0c;配置useNormalizedOHMUrl属性为true (我这项目创…

Tcp网络通信的基本流程梳理

先来一张经典的流程图 接下介绍一下大概流程&#xff0c;各个函数的参数大家自己去了解加深一下印象 服务端流程 1.创建套接字&#xff1a;使用 socket 函数创建一个套接字&#xff0c;这个套接字后续会被用于监听客户端的连接请求。 需要注意的是&#xff0c;服务端一般有俩…

Nexus File类型Blob Stores迁移至Minio操作指南(下)

#作者&#xff1a;闫乾苓 文章目录 迁移步骤停止nexus3服务备份nexus原始数据修改Blob Stores中元数据文件中类型为s3将Blob Stores中的二进制构件文件数据复制s3&#xff08;minio&#xff09;存储修改OrientDB中相关Blob Stores的属性修复OrientDB的文件权限开启nexus3服务迁…