一个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    0x120x0001    0x340x0002    0xab0x0003    0xcd如果我们去读取一个地址为0x0000的四个字节变量:若字节序为big-endian,则读出结果为0x1234abcd;若字节序位little-endian,则读出结果为0xcdab3412.如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为:big-endian      little-endian0x0000          0x12                  0xcd0x0001          0x23                  0xab0x0002          0xab                  0x340x0003          0xcd                  0x12Intelx86系列以及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)类、结构体或数组的元素

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

Byte 高位/低位简介绍(大端格式/小端格式)相关推荐

  1. 大端模式小端模式 主机序网络序

    1. 主机序 不同的CPU有不同的字节序类型这些字节序是指整数在内存中保存的顺序,这个叫做主机序.最常见的有两种: 1.         Little endian:将低序字节存储在起始地址. 即小端 ...

  2. 大端模式小端模式、主机序网络序、入栈地址高低问题

    一.大端模式&小端模式 所谓的"大端模式",是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把 ...

  3. ARM的大端格式big endian、小端格式little endian和字word

    1.大小端格式的定义 在ARM体系结构的数据存储格式中,将4字节定义为一个字(Word),2字节定义为半字. 例如从0地址开始存放字数据,0号字节到3号字节放置第一个字数据,从第4号字节到第7字节放置 ...

  4. IoT:大端与小端字节数据详解

    大端与小端字节数据详解 转自:https://blog.csdn.net/dosthing/article/details/80641173 前言 计算机的数据以01构成的字节存储,这就涉及数据大小端 ...

  5. mysql是大端小端_大端和小端 - HackerVirus - 博客园

    在计算机中是以字节为单位,每个地址对应一个字节,一个字节8bit.在C中,除了8bit的char以外,还有16bit的short,32位的int,64位long,当然具体要由编译器决定,可以通过siz ...

  6. 深入理解计算机大端与小端

    大端与小端 在嵌入式开发中,大端(Big-endian)和小端(Little-endian)是一个很重要的概念. MSB与LSB 节序的问题,必然牵涉到两大CPU派系.那就是Motorola的Powe ...

  7. 使用c语言测试大端和小端,C语言*符号使用及大端法小端法测试

    工具:Microsoft Visual C++ 6.0 例子: int a = 1; int* b = &a; C语言规定a表示存储单元中的数据,&a表示存储单元的地址,b存储的就是a ...

  8. c语言 int大端转小端,C++将整型数据转换成大端或小端存储顺序

    昨晚帮导师从指令中恢复图像的时候,导师要我转换成raw格式,也就是记录图像像素的二进制序列,然后反复强调让我注意大端小端.当时我也没在意,用ofstream的write方法一个个地写进去,发现有部分数 ...

  9. Java中的大端和小端

    Java整型的字节序是() A.Little-Endian(小端) B.Big-Endian(大端) C.由运行程序的CPU决定 D.由编译程序的CPU决定 对于大小端,我估计肯定有很多开发人员跟我一 ...

最新文章

  1. git如何移除某文件的版本控制
  2. 人工智能之神经网络要进入的下一个阶段-演绎推理
  3. Windows同时安装python3.0和python2.7
  4. PMCAFF | O2O防刷单并没那么难,看完这些你也会反作弊
  5. python 2x与python 3x是否兼容_使.next()与Python2和3兼容
  6. websocket 连接本地端口_聊聊 WebSocket,还有 HTTP
  7. apache.camel_Apache Camel 2.14中的更多指标
  8. mysql用户创建、授权
  9. mysql innodb远程备份_详细说明MySQL备份、还原、innoDB打开
  10. TAOCP-READING-1-5
  11. 在线OJ后端涉及到的知识点
  12. 怎么制作升温曲线图_如何在EXcel做体温曲线图
  13. 项目经理的工具箱---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三)...
  14. PVE最小资源安装Jellyfin(LXC容器使用turnkey-mediaserver模板)
  15. 浏览器如何在f12中查看接口地址_经过浏览器中的F12中来查看接口的入参、出参和网页响应时间(新手教程)...
  16. 微信支付 postman_微信信用分是什么怎么回事 如何查看微信支付分图文攻略
  17. 小程序自定义导航栏指南
  18. 垃圾邮件的判定标准与识别方法
  19. SVM——(三)对偶性和KKT条件(Lagrange duality and KKT condition)
  20. 智能编程和乐高机器人的区别

热门文章

  1. 简单粗暴搞定webpack4的style-loader!css-loader
  2. 美利坚合众国概况(美国概况)
  3. java支付宝当面付接口_【图文】支付宝当面付配置教程
  4. 生态伙伴开发实践 | 智慧检测实验室应用系统快速接入指令集数字底座
  5. 【面试题集 —— No.01】常见图片格式BMP、JPG/JPEG、PNG、GIF、TIFF、SVG的区别
  6. uni-app里的拓展组件uni ui与UI框架uView UI的Popup 弹出层的区别!
  7. 微信链接防拦截跳转系统 微信域名防屏蔽技术
  8. 八大著名IT企业云计算策略(英文版)
  9. 我接触过的广东美食——流口水
  10. springboot 微信太阳码_springboot教务管理系统+微信小程序云开发