Byte 高位/低位简介绍(大端格式/小端格式)

2023-05-16

一个byte由8个二进制位构成1个字节,即1Byte=8Bit

其中左边是高位,右边是低位。

high_four = (byte & 0xf0) >> 4;  (0xf0=11110000)

low_four = byte & 0x0f;   (0x0f=00001111)

0&1=0,1&1=1。所以byte&0x0f就是byte&00001111。不管byte的高四位是多少,&上0x0f的高四位(0000)之后,都是0。不管

byte的低四位是多少,&上0x0f的低四位(1111)之后,都会保存原值。

比如byte是11010111。byte的高四位是1101。&上0x0f的高四位0000之后,得到的值是0000。因为1&0=0,0&0也等于0。

byte的低四位是0111。&上0x0f的低四位1111之后,得到的值是0111。也就是原来的值。所以11010111&0x0f就是00000111。也就是把byte

的高四位变成0,低四位保持原值。所以取低四位的值就是byte&0x0f。

要取得byte的高四位。就是byte & 0xf0也就是11010111&11110000=11010000。然后再右移四位。变成1101。

(通过debug发现。如果右移的数据里面都是0的话,比如11010000右移四位数,就是右移了4个0。那么,左边就会补0变成了00001101。

如果11010111没有&11110000就直接右移4位的话,会变成1101.但是前面补位的变成了1。所以不是00001101而是11111101)

大小端问题,是指在内存中(注意是内存,不是硬盘)以 字节为单位的排列顺序,与cpu和操作系统有关,操作系统可以选择大小端,java默认读取按大端读取。

大端:高位存在低地址,低位存在高地址;
小端:高位存在高地址,低位存在低地址;

  举个例子,从内存地址0x0000开始有以下数据
        0x0000    0x12
        0x0001    0x34
        0x0002    0xab
        0x0003    0xcd
    
        如果我们去读取一个地址为0x0000的四个字节变量:
        若字节序为big-endian,则读出结果为0x1234abcd;
        若字节序位little-endian,则读出结果为0xcdab3412.

        如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为:
                         big-endian      little-endian
        0x0000          0x12                  0xcd
        0x0001          0x23                  0xab
        0x0002          0xab                  0x34
        0x0003          0xcd                  0x12
        
        Intelx86系列以及ARM系列CPU都是little-endian的字节序.

java 中有两个byte ,byte b[]=[0xcd,0xab],按小端读取就变成[0xab,0xcd]

还不懂? 再解释一遍:以下是另一位大佬的解释

一、高地址和低地址

                                        

 二、高字节低字节

如int a=16777220,化为十六进制是0x01 00 00 04,则04属于低字节,01属于高字节。

三、大小端模式

(1)如果a在内存中的存放顺序为下图(即低字节存放在高地址),则为大端模式

                         

 (2)如果a在内存中的存放顺序为下图(即低字节存放在低地址),则为小端模式

                        

(3)如何互换(通过移位操作再或)

 

 

四、存放顺序

数据在内存中存放的原则

(1)一个整数类型内部

低地址存储低位,高地址存储高位。比如int a=1,则存储情况为0000(高地址) 0000 0000 0001(低地址)。

(2)若干个局部变量(在栈中存储的)

先定义的高地址,后定义的低地址。

(3)类、结构体或数组的元素

先定义的低地址,后定义的高地址。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Byte 高位/低位简介绍(大端格式/小端格式) 的相关文章

  • Oracle # 字符串匹配函数(Oracle、SQLSERVER、Excel)

    引言 xff1a 当数据库设置字段的时候 xff0c 会设置1表XXX xff1b 0表示XXX 查询的时候怎么显示汉字呢 xff1f Oracle数据库 xff1a 普通查询数据 xff1a select from U ORANGEZAT
  • 时间序列预测——Prophet模型

    文章链接 xff1a 时间序列预测 ARIMA模型 https blog csdn net beiye article details 123317316 spm 61 1001 2014 3001 5502 1 Propht模型概述 Pr
  • 机器人导航——路径跟踪

    要完成一套完整的机器人路径规划 xff0c 并完成其物理实验并非一件简单的事情 参考 xff1a http wenku baidu com link url 61 n11mP6EDlM78NZYZ4yQYXzmzPeBV6BeLNOUjIv
  • python 读取txt出现\xef\xbb\xbf…的问题

    用python读取txt文件 xff0c 文件的内容是一列数如下 xff1a 1883 1886 1900 1900 1897 1897 1897 1897 1906 1917 1910 1910 但是读取的时候第一个元素为 xef xbb
  • (算法)判断两个区间是否重叠

    题目 xff1a 判断两个区间是否重叠 思路 xff1a 假设区间表示为 start end xff0c 先存在两个区间A B 两个区间的关系有两种 xff1a 重叠与不重叠 重叠的情况有4种 xff0c 两种相交 xff0c 两种包含 x
  • python ctrl+c 退出while True:

    写了一个死循环 xff0c 类似 xff1a def function while True my code 程序运行后想用ctrl 43 c按键停止程序 xff0c 可是终止不了 以下为解决办法 xff1a 第一步 xff1a 加入sys
  • python二维字典

    感谢原文 xff1a http www jb51 net article 83108 htm 本文实例讲述了Python的 二维 字典 two dimension dictionary 定义与实现方法 分享给大家供大家参考 xff0c 具体
  • ros安装出现依赖问题

    http www liuxiao org 2015 10 ros E5 9C A8 ubuntu 14 04 E7 B3 BB E7 BB 9F E4 B8 8A E5 AE 89 E8 A3 85 ros indigo 0 安装环境 xf
  • KMP算法介绍

    参考 xff1a https www cnblogs com c cloud p 3224788 html 前言 之前对kmp算法虽然了解它的原理 xff0c 即求出P0 Pi的最大相同前后缀长度k xff1b 但是问题在于如何求出这个最大
  • 【python】*与** 参数问题

    原文地址 xff1a https www cnblogs com paulwinflo p 5764748 html 可变参数 在Python函数中 xff0c 还可以定义可变参数 顾名思义 xff0c 可变参数就是传入的参数个数是可变的
  • 计算机网络编程知识总结

    博客出处 xff1a http www cnblogs com maybe2030 阅读目录 1 网络层次划分 2 OSI七层网络模型 3 IP地址 4 子网掩码及网络划分 5 ARP RARP协议 6 路由选择协议 7 TCP IP协议
  • 机器学习——决策树(decision tree)

    相关文章链接 xff1a 机器学习 人工神经网络 xff08 NN xff09 机器学习 卷积神经网络 xff08 CNN xff09 机器学习 循环神经网络 xff08 RNN xff09 机器学习 长短期记忆 xff08 LSTM xf
  • 基于UDP的Winsock编程(C++版)

    基于UDP的Winsock编程与基于TCP的Winsock编程相比 xff0c 只是缺少了一个步骤而已 对于Server xff0c 缺少了接受连接的过程 xff08 accept 函数调用 xff09 xff1b 对于Client xff
  • Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven re

    Using insecure protocols with repositories without explicit opt in is unsupported Switch Maven repository maven4 http ma
  • 解析APK的AndroidManifest.xml

    将apk重命名zip解压后获取的AndroidManifest xml是加密后的 xff0c 如果需要看到里边的具体的内容信息 xff0c 需要使用AXMLPrinter2 jar来进行 1 网上下载工具AXMLPrinter2 jar工具
  • unity Symbolicate Android crash

    参考链接 https support unity com hc en us articles 115000292166 Symbolicate Android crash https docs unity3d com Packages co
  • 【无标题】

    Starting a Gradle Daemon 1 incompatible Daemon could not be reused use status for details Configure project launcher WAR
  • unity里生成的.csproj和.sln :assembly definition

    有一段时间一直没明白为啥有的时候第三方的package里的代码没法引用我们项目的 最近有点心得 记录下 在创建unity项目的时候默认是创建一个解决方案就是以 sln为结尾的 默认开发时都在同一个解决项目里 所以不会出现相互引用不到的问题
  • Jenkins 报错: command not found

    主要是路径问题 xff0c Jenkins无法识别 在一台 macOS 的 anget 中 xff0c 我们的 pipeline 脚本一直报错 xff1a cmake command not found xff0c 但实际系统中已经通过 b
  • java.lang.AssertionError: annotationType(): unrecognized Attribute name MODULE (class com.sun.tools.

    改成 30 就好了

随机推荐

  • UnityEngine.JsonUtility.FromJson 一直序列化失败坑多多

    今天写了个小工具 xff0c 偷懒就使用json数据存储 xff0c 结果一直转换失败 xff0c 查了半响 xff0c 原来是忘了加 Serializable xff0c 感觉好坑 xff0c 如果是本身数据类型是没有问题的 xff0c
  • STM32单片机ESP8266发送数据到WiFi接收端代码实现

    ESP8266支持的一些指令看我另一篇博文 xff1a http blog csdn net qq 17242837 article details 53931712 首先需要配置STM32的串口发送和接收 xff0c 在本文中基于原子和网
  • 机器学习——XGboost模型

    相关文章链接 机器学习 人工神经网络 xff08 NN xff09 机器学习 卷积神经网络 xff08 CNN xff09 机器学习 循环神经网络 xff08 RNN xff09 机器学习 长短期记忆 xff08 LSTM xff09 机器
  • 处理https中的Digest authentication鉴权

    问题 xff1a RESTful 的传输协议类型为 HTTPS xff0c 鉴权方式为 Digest SHA256 xff08 即DIGEST摘要认证 xff09 时 xff0c 接口调用问题 参考资料 xff1a 认识HTTP摘要认证 x
  • 自旋锁代码实现

    package com xiang lock import java sql Time import java util concurrent TimeUnit import java util concurrent atomic Atom
  • Python开发Windows桌面应用程序(一)PyCharm+PyQt5开发环境搭建

    前言 最近想开发一套Netty网关日志分析程序 xff0c 用来分析设备的原始数据 因为网关是放在linux服务器上 xff0c 之前查看日志是通过Xftp工具将日志下载到本地 xff0c 然后找到对应的日志数据进行分析 对于运维人员来说
  • Python开发Windows桌面应用程序(二)简单应用程序实现

    前言 上编blog说到用Python开发Windows桌面应用程序的环境搭建 xff0c 下面就说说如何实现一个简单的远程日志读取的功能 界面绘制 打开界面绘制工具 xff0c 选中项目后 xff0c 右键找到External Tools
  • Java SpringBoot集成微信告警推送服务

    一 申请微信告警模板 登录微信公众号平台 xff0c 在服务里面找到模板消息 我们点击从模板库中添加一个模板消息 可以通过关键字搜索告警模板 xff0c 点击详情可以查看该模板的详情与示例 xff0c 判断该模板是否试用与我们 最后找到合适
  • 物联网组网技术优缺点对比:蓝牙、LoRa、wifi、NB-IoT、ZigBee等

    1 前言 最近对物联网产品自组网技术选型 xff0c 找到合适的组网技术 xff0c 让产品自行组网并完成数据的传输 2 参数对比 3 优缺点描述 3 1 蓝牙 优点 xff1a xff08 1 xff09 低功率 xff0c 便于电池供电
  • C# 实现国密SM3加解密封装

    1 Portable BouncyCastle 引入 右键解决方案的引用 xff0c 选择管理NuGet程序包 在浏览的搜索框中搜索 xff1a Portable BouncyCastle 选择第一个 xff0c 在右侧点击安装即可完成程序
  • Python 基于OpenCV+face_recognition实现人脸捕捉与人脸识别(照片对比)

    1 安装包依赖 与上篇通过摄像头动态识别人脸一样 xff0c 先下载好opencv python face recognition xff0c 这里因为使用的是照片对比的方式 xff0c 特意使用tkinter画了一个简单的GUI方便操作
  • Ubuntu 下NGINX 的简单使用

    1 NGINX的安装与卸载 1 1 安装NGINX apt get install nginx 1 2 NGINX操作命令 service nginx start 启动 service nginx reload 重新加载配置文件 servi
  • SpringBoot 集成Shell命令实现系统日志查询并通过API返回给前端

    1 目的 在做物联网项目中 xff0c 为了方便产品测试人员以及第三方产品集成商能通过系统快速获取设备原始数据 xff0c 因此考虑在物联网终端管理平台增加读取物联网通讯服务记录的终端日志的功能 我的想法是直接通过Java操作Linux服务
  • SPSS软件实操——ARIMA时间序列预测模型

    相关文章链接 时间序列预测 ARIMA模型 https blog csdn net beiye article details 123317316 spm 61 1001 2014 3001 5501 案例 xff1a 基于ARIMA模型对
  • SpringBoot使用阿里云邮件服务实现账户分享

    1 阿里云邮件集成 详情参见 xff1a Java SpringBoot集成阿里云短信与邮件服务 阿里云短信jar包 大鱼 gt 的博客 CSDN博客 2 使用Html模板实现邮件内容样式 2 1 引入pom lt dependency g
  • OSM学习之路(一):OSM介绍

    背景 xff1a 公司作为车联网行业 xff0c 少不了与地图打交道 xff0c 之前一直依赖谷歌 xff0c 百度等三方地图供应商来处理地图方面问题 但是随着客户量越来越大 xff0c 谷歌的吃相变得越来越难看 自7月16日起 xff0c
  • C语言单链表和结构体的结合

    链表与结构体的结合 xff0c 可以很好的方便输入输出 xff0c 以后使用链表时只需要将结构体的信息稍作修改就可以使用 xff0c 非常方便 xff01 xff01 xff01 下面是写学生学号和姓名的结构体与链表的结合create函数
  • struct和class的区别

    总结 xff0c 主要有这么几点不同 xff1a 1 struct 是值类型 xff0c class 是对象类型 2 struct 不能被继承 xff0c class 可以被继承 3 struct 默认的访问权限是public 而class
  • c++中模板类的成员函数的声明与定义应该放在头文件里

    今天尝试自己实现vector数据结构底层 xff0c 在定义vector模板类的时候 xff0c 还想像往常一样把类分为 h文件和 cpp文件 xff0c 把成员函数的声明放在 h文件中 xff0c 把具体实现放在 cpp文件中 xff0c
  • Byte 高位/低位简介绍(大端格式/小端格式)

    一个byte由8个二进制位构成1个字节 即1Byte 61 8Bit 其中左边是高位 xff0c 右边是低位 high four 61 byte amp 0xf0 gt gt 4 0xf0 61 11110000 low four 61 b