计算机的大小端模式

news2025/1/21 0:52:01

计算机的大小端模式

  • 大端/小端字节序
  • 字节序转换函数
  • 判断Linux字节序的方法
  • string有字节序的说法吗
  • 64位系统和32位系统的区别

大端/小端字节序

计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。

举例来说,数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11。

  • 大端字节序:低地址端存放高位字节,这是人类读写数值的方法。
  • 小端字节序:低地址端存放低位字节。

同理,0x1234567的大端字节序和小端字节序的写法如下图:
在这里插入图片描述

计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的。所以,计算机的本机字节序基本都是小端字节序。但是,人类还是习惯读写大端字节序。所以,除了计算机的内部处理,其他的场合几乎都是大端字节序,比如网络传输和文件储存

字节序转换函数

最常用的大小端转换函数:

uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);

h表示host,指小端,n表示network指大端,l表示32位长整数,s表示16位短整数。

注意:32位是用来转换IP地址的,16位是用来转换端口号的

判断Linux字节序的方法

#include<stdio.h>
int main()
{
	int a = 1;   //a的十六进制位是0x00000001,所以容易取出并进行判断
	char* p = &a;//对p解引用时只是拿到a的第一个字节的内容
	if (*p == 1) //如果是小端,那么第一个字节就是01
	{
		printf("小端储存模式\n");
	}
	else         //如果是大端,那么第一个字节为00
	{
		printf("大端储存模式\n");
	}
	return 0;
}

string有字节序的说法吗

没有,字节序是指byte的排序,string里面都是char,一个char就是1字节,只要出现索引的地方,一定是索引越大地址越大。

64位系统和32位系统的区别

  1. 处理能力不同。64位可以一次性处理8个字节的数据量,而32位一次性只可以处理4个字节的数据量,因此64位比32位的运行能力提高了一倍。
  2. 内存寻址不同。64位最大寻址空间为2的64次方,理论值直接达到了16TB,而32位的最大寻址空间为2的32次方,为4GB,换而言之,就是说32位系统的处理器最大只支持到4G内存,而64位系统最大支持的内存高达亿位数。
  3. 运行软件不同。由于32位和64位CPU的指令集是不同的。所以需要区分32位和64位版本的软件。一般来说最广泛使用的intelx86是源于很久以前的80x86系列处理器,从80386开始就是32位的CPU,也对应的32位指令集。intel后来的所有32位CPU都使用了这一套指令集。再后来发展到64位CPU,从x86扩展出64位的指令集,一般被称为x64。为了保证兼容性,intel使得在其64位CPU上也能运行老的32位x86指令。于是实际上我们可以在64位CPU上运行32位程序,但是反过来不行。简而言之就是64位的操作系统可以兼容运行32位的软件,反过来32位系统不可以运行64位的软件。

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

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

相关文章

MySQL数据库——DQL操作——基本查询

文章目录 前言事前准备——测试数据整表查询指定列查找别名查询MySQL运算符条件查询模糊查询排序查询聚合查询分组查询分组之后的条件筛选 分页查询将整张表的数据插入到另一张表中 前言 MySQL数据库常见的操作是增删查改&#xff0c;而其中数据的查询是使用最多&#xff0c;也…

玩转LaTeX(三)【数学公式(基础)、​矩阵、多行公式】

数学公式基础 导言区&#xff08;引包&#xff09; \usepackage{amsmath} %带星号的eqution 正文区 \begin{document}%数学公式初步 \section{简介} \LaTeX{}将排版内容分为文本模式和数学模式。文本模式用于普通文本排版&#xff0c;数学模式用于数学公式排版。 …

小白带你学习linux的mysql服务(主从mysql服务和读写分离三十一)

目录 二、MySQL Replication优点&#xff1a; 三、MySQL复制类型 1、异步复制&#xff08;Asynchronous repication&#xff09; 2、全同步复制&#xff08;Fully synchronous replication&#xff09; 3、半同步复制&#xff08;Semisynchronous replication&#xff09;…

用pip给python安装第三方包

2023年7月30日&#xff0c;周日晚上 目录 搜索包安装包升级包卸载包查看安装了哪些包查看指定的包的详细信息查看pip把某个包安装到了哪里 搜索包 现在只能去专门的网站搜索python的第三方包了 Search results PyPI 安装包 通过下面这条指令就可以安装包 pip install pac…

【数据分享】1999—2021年地级市工业企业资产情况和主要财务指标(Excel/Shp格式)

在之前的文章中&#xff0c;我们分享过基于2000-2022年《中国城市统计年鉴》整理的1999-2021年地级市的人口相关数据、各类用地面积数据、污染物排放和环境治理相关数据、房地产投资情况和商品房销售面积、社会消费品零售总额和年末金融机构存贷款余额、地方一般公共预算收支状…

Prometheus中的关键设计

1、标准先行&#xff0c;注重生态 Prometheus 最重要的规范就是指标命名方式&#xff0c;数据格式简单易读。比如&#xff0c;对于应用层面的监控&#xff0c;可以要求必须具备这几个信息。 指标名称 metric Prometheus 内置建立的规范就是叫 metric&#xff08;即 __name__…

RedLock + Redisson

目录 2.9 RedLock2.9.1 上述实现的分布式锁在集群状态下失效的原因2.9.2 解决方式-RedLock 2.10 redisson中的分布式锁简单使用redisson中的锁Redisson常用配置2.10.1 Redisson可重入锁实现原理2.10.2 公平锁&#xff08;Fair Lock&#xff09; 2.9 RedLock 2.9.1 上述实现的分…

FLinkCDC读取MySQl时间戳时区相关问题解决汇总

FlinkCDC时间问题timestamp等https://blog.csdn.net/qq_30529079/article/details/127809317 FLinkCDC读取MySQl中的日期问题https://blog.csdn.net/YPeiQi/article/details/130265653 关于flink1.11 flink sql使用cdc时区差8小时问题https://blog.csdn.net/weixin_44762298/…

Redis以及Java使用Redis

一、Redis的安装 Redis是一个基于内存的 key-value 结构数据库。 基于内存存储&#xff0c;读写性能高 适合存储热点数据&#xff08;热点商品、资讯、新闻&#xff09; 企业应用广泛 官网&#xff1a;https://redis.io 中文网&#xff1a;https://www.redis.net.cn/ Redis…

vuejs源码阅读之代码生成器

代码生成器是模版编译的最后以后&#xff0c;它的作用是将AST转换成渲染函数中的内容&#xff0c;这个内容可以称为代码字符串。 代码字符串可以被包装在函数中执行&#xff0c;这个函数就是我们通常说的渲染函数。 渲染函数被执行之后&#xff0c;可以生成一份VNode&#xf…

kettle 学习笔记

kettle 学习笔记 个人理解下载 / 安装kettle及测试环境准备kattle下载安装JDK安装配置MySQL安装配置 使用练习创建数据库连接转换练习 个人理解 ETL工具的一种&#xff0c;作用是将数据进行抽取&#xff0c;转换&#xff0c;应该是数据中心类型的项目用的比较多&#xff0c;将…

在Word中快速输入方框对号

在Word中输入方框对号播报文章 先输入“2611”&#xff0c;然后同时按ALTX&#xff0c; 插入 符号 其他符号

C++ 哈希的应用【布隆过滤器】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f383;操作环境&#xff1a; Visual Studio 2022 版本 17.6.5 文章目录 &#x1f307;前言&#x1f3d9;️正文1、字符串比较2、布隆过滤器的概念3、布隆过滤器的实现3.1、基本结构3.2、插入…

谈谈网络端口的概念、分类,以及常见的端口号

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、网络端口的概念 二、网络端口的分类 1、公认端口 2、注册端口 3、动态和私有端口 三、网络端口的作用 四、常见的端口号 1、…

7.7 SpringBoot实战 管理员借阅审核列表 --分页和枚举的使用

文章目录 前言一、需求二、定义接口 BookAdminController三、核心实现 BookBorrowService新建 BookBorrowService 接口定义如下&#xff1a;新建 BookBorrowServiceImpl 类&#xff0c;核心实现逻辑&#xff1a;新建 BookBorrowBO 四、图书借阅状态枚举 BookBorrowStatusEnum五…

orm(连接MySQL,增删改,创建表,样例)

1.启动数据库 mysql -u root -p password:(输入密码)2.创建数据库 create database stu DEFAULT CHARSET utf8 COLLATE utf8_general_ci;3.更改Django中settings.py文件配置 Django连接数据库&#xff1a; DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: st…

NICE-SLAM代码复现和解析(解决使用yaml文件配置conda环境时下载慢的问题)

代码运行 代码地址&#xff1a;https://github.com/cvg/nice-slam/tree/master 环境配置 下载压缩包&#xff0c;打开environment.yaml文件 向yaml文件中添加如下代码 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - https://mirrors.ustc.edu.cn/anacon…

docker中涉及的挂载点总结

文章目录 1.场景描述2. 容器信息在主机上位置3. 通过docker run 命令4、通过Dockerfile创建挂载点5、容器共享卷&#xff08;挂载点&#xff09;6、最佳实践&#xff1a;数据容器 1.场景描述 在介绍VOLUME指令之前&#xff0c;我们来看下如下场景需求&#xff1a; 1&#xff…

关于OAuth2.0的一些基本知识

本文记录下关于OAuth2.0的一些基本知识 文章目录 什么是 OAuth2.0OAuth2.0 架构术语介绍Web 服务器用户代理本机应用程序本文小结 什么是 OAuth2.0 OAuth 是一种开放的授权协议&#xff0c;它是目前最流行的授权机制。它允许将存储在一个站点上的资源共享到另一个站点&#xff…

享元模式——实现对象的复用

1、简介 1.1、概述 当一个软件系统在运行时产生的对象数量太多&#xff0c;将导致运行代价过高&#xff0c;带来系统性能下降等问题。例如&#xff0c;在一个文本字符串中存在很多重复的字符&#xff0c;如果每个字符都用一个单独的对象来表示&#xff0c;将会占用较多的内存…