如何将32位数据转化1bit valid,1bit modified,19bit tag, 3 bit index, 8bit数据

以下是将一个32位的无符号整型数据解析为包含 1-bit valid1-bit modified19-bit tag3-bit index8-bit data 各部分的代码:

#include <stdio.h>
#include <stdint.h>

// 数据解析函数
void parseCacheLine(uint32_t input) {
    uint8_t valid = (input >> 31) & 0x1;       // 取最高位 (第 31 位)
    uint8_t modified = (input >> 30) & 0x1;    // 取次高位 (第 30 位)
    uint32_t tag = (input >> 11) & 0x7FFFF;    // 取 19 位 Tag (位 29-11)
    uint8_t index = (input >> 8) & 0x7;        // 取 3 位 Index (位 10-8)
    uint8_t data = input & 0xFF;               // 取最低 8 位 Data (位 7-0)

    // 打印结果
    printf("Input: 0x%08X\n", input);
    printf("Valid: %u\n", valid);
    printf("Modified: %u\n", modified);
    printf("Tag: 0x%05X\n", tag);  // 打印为 19 位十六进制
    printf("Index: %u\n", index);
    printf("Data: 0x%02X\n", data);  // 打印为 8 位十六进制
}

int main() {
    uint32_t input = 0xC3F456FF; // 示例 32 位数据
    parseCacheLine(input);
    return 0;
}

输出结果(以 input = 0xC3F456FF 为例):

Input: 0xC3F456FF
Valid: 1
Modified: 1
Tag: 0x1F456
Index: 3
Data: 0xFF

代码解析:

  1. 分解逻辑:

    • valid

      (input >> 31) & 0x1
      
      • 将输入右移 31 位,保留第 31 位作为 valid
    • modified

      (input >> 30) & 0x1
      
      • 将输入右移 30 位,保留第 30 位作为 modified
    • tag

      (input >> 11) & 0x7FFFF
      
      • 将输入右移 11 位,保留 19 位 (0x7FFFF) 的 tag
    • index

      (input >> 8) & 0x7
      
      • 将输入右移 8 位,保留 3 位 (0x7) 的 index
    • data

      input & 0xFF
      
      • 取最低 8 位 (0xFF) 的 data
  2. 代码特点:

    • 使用位移和按位与操作精确提取每一部分数据。
    • 按标准格式打印结果,确保解析正确性。
  3. 示例值分析:
    对于 input = 0xC3F456FF

    • Valid = 1 (第 31 位)
    • Modified = 1 (第 30 位)
    • Tag = 0x1F456 (位 29-11)
    • Index = 3 (位 10-8)
    • Data = 0xFF (位 7-0)

该代码提供了一个完整的流程,用于将 32 位数据解析为对应的缓存字段。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【DEKF算法】DEKF(双扩展卡尔曼滤波算法)估计锂电池荷电状态,SOC与SOH联合仿真

摘要 本文研究了基于双扩展卡尔曼滤波&#xff08;DEKF&#xff09;算法对锂电池荷电状态&#xff08;SOC&#xff09;和健康状态&#xff08;SOH&#xff09;的估计问题。通过构建锂电池的等效电路模型&#xff08;ECM&#xff09;&#xff0c;将SOC与SOH联合估计&#xff0c…

4-3 AUTOSAR BSW IO抽象

返回总目录->返回总目录<- 目录 一、概述 二、示例接口 一、概述 在AUTOSAR中,IO抽象模块的主要作用是提供对硬件设备的控制和访问。它包括了以下几个主要模块: DIO(Digital Input/Output):用于控制数字输入和输出信号,例如控制LED灯的开关或读取按键状态…

【动手学深度学习Pytorch】1. 线性回归代码

零实现 导入所需要的包&#xff1a; # %matplotlib inline import random import torch from d2l import torch as d2l import matplotlib.pyplot as plt import matplotlib import os构造人造数据集&#xff1a;假设w[2, -3.4]&#xff0c;b4.2&#xff0c;存在随机噪音&…

【数据结构】树——顺序存储二叉树

写在前面 在学习数据结构前&#xff0c;我们早就听说大名鼎鼎的树&#xff0c;例如什么什么手撕红黑树大佬呀&#xff0c;那这篇笔记不才就深入浅出的介绍二叉树。 文章目录 写在前面一、树的概念及结构1.1、数的相关概念1.2、数的表示1.3 树在实际中的运用&#xff08;表示文…

Linux常用命令,持续更新钟

在Linux系统中&#xff0c;你可以使用多种命令来拷贝和移动文件及目录。以下是常用的几个命令及其用法&#xff1a; 一、拷贝文件或目录 cp 命令 cp 命令用于拷贝文件或目录。 拷贝文件&#xff1a; cp source_file destination_file 例如&#xff1a; cp file1.txt /hom…

计算机视觉中的双边滤波:经典案例与Python代码解析

&#x1f31f; 计算机视觉中的双边滤波&#xff1a;经典案例与Python代码解析 &#x1f680; Hey小伙伴们&#xff01;今天我们要聊的是计算机视觉中的一个重要技术——双边滤波。双边滤波是一种非线性滤波方法&#xff0c;主要用于图像去噪和平滑&#xff0c;同时保留图像的边…

Ubuntu 22.04 上快速搭建 Samba 文件共享服务器

Samba 简介 Samba 是一个开源软件&#xff0c;它扮演着不同操作系统间沟通的桥梁。通过实现 SMB&#xff08;Server Message Block&#xff09;协议&#xff0c;Samba 让文件和打印服务在 Windows、Linux 和 macOS 之间自由流动。 以下是 Samba 的特点&#xff1a; 跨平台兼…

在MATLAB中实现自适应滤波算法

自适应滤波算法是一种根据信号特性自动调整滤波参数的数字信号处理方法&#xff0c;其可以有效处理噪声干扰和信号畸变问题。在许多实时数据处理系统中&#xff0c;自适应滤波算法得到了广泛应用。在MATLAB中&#xff0c;可以使用多种方法实现自适应滤波算法。本文将介绍自适应…

AWTK-WIDGET-WEB-VIEW 发布

awtk-widget-web-view 是通过 webview 提供的接口&#xff0c;实现的 AWTK 自定义控件&#xff0c;使得 AWTK 可以方便的显示 web 页面。 项目网址&#xff1a; https://gitee.com/zlgopen/awtk-widget-web-view webview 提供了一个跨平台的 webview 接口&#xff0c;是一个非…

使用Web Workers提升JavaScript的并行处理能力

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Web Workers提升JavaScript的并行处理能力 使用Web Workers提升JavaScript的并行处理能力 使用Web Workers提升JavaScript的…

shell编程--传参与数学运算

探讨一下如何向shell脚本传递参数。 脚本传参 首先用vim创建一个脚本。 vim 脚本.sh 可以理解为其他编程语言的标准输出&#xff0c;例如C语言的输出%d,表标准输出数字。 用echo 执行文件名称是&#xff1a;$0 echo 第一个参数是&#xff1a;$1 echo 传递参数作为字符串显…

头歌-本关任务:使用GmSSL命令行,生成SM2私钥并对文件进行签名验证(第二关)。

第一关在网上找到了&#xff0c;但第二关没找到&#xff0c;在这里做一下补充:) 如果想认真学的话可以看看文档 国密SM2椭圆曲线密码标准http://gmssl.org/docs/sm2.html 内容为 GuetPython 的明文文件msg.txt 私钥sm2.pem 公钥sm2Pub.pem 使用sm2utl对msg.txt进行签名&…

elementui el-table中给表头 el-table-column 加一个鼠标移入提示说明

前言 在使用el-table 表格中有些表格的表头需要加入一些提示&#xff0c;鼠标移入则出现提示&#xff0c;非常实用&#xff0c;我是通过el-table中的el-tooltip实现的&#xff0c;以下的效果预览 代码实现 <el-table ref"multipleTable" :data"data"…

在kile 5中一个新工程的创建

这两天博主学习到了在kile5中创建一个工程&#xff0c;当然博主不会忘了小伙伴们的&#xff0c;这就和你们分享。 本次创建以STM32F103C8为例 创建过程&#xff1a; 1首先创建文件 名字随意&#xff0c;但也不要太随意&#xff0c;因为是外国软件&#xff0c;所以多少对中文…

PortSwigger WEB缓存欺骗

一、Web缓存概述 Web 缓存是位于源服务器和用户之间的系统。当客户端请求静态资源时&#xff0c;请求首先被定向到缓存。如果缓存不包含资源的副本&#xff08;称为缓存未命中&#xff09;&#xff0c;则请求将转发到源服务器&#xff0c;该服务器将处理并响应请求。然后&#…

nginx源码安装配置ssl域名

nginx源码安装 下载 wget http://nginx.org/download/nginx-1.24.0.tar.gz 解压 tar -zxvf nginx-1.24.0.tar.gz 下载openssl apt install openssl 安装nginx cd nginx-1.24.0 sudo apt-get install libpcre3 libpcre3-dev ./configure --prefix=/home/nginx24 --with-http_ss…

如何用WordPress和Shopify提升SEO表现?

选择合适的建站程序对于SEO优化非常重要。目前&#xff0c;WordPress和Shopify是两种备受推崇的建站平台&#xff0c;各有优势。 WordPress最大的优点是灵活性。它支持大量SEO插件&#xff0c;帮助你调整元标签、生成站点地图、优化内容结构等。这些功能让你能够轻松地提升网站…

RHCE的学习(20)

变量5种赋值方式 shell中变量赋值5种方式&#xff0c;其中采用name10的方法称A 直接赋值 nameB read命令 read v1C 使用命令行参数 &#xff08;$1 $2 $3 ..&#xff09; name$1D 使用命令的输入 username$(whoami)E 从文件读取 #cut -d : -f1 /etc/passwd > /user.listfor…

llama factory lora 微调 qwen2.5 7B Instruct模型

项目背景 甲方提供一台三卡4080显卡 需要进行qwen2.5 7b Instruct模型进行微调。以下为整体设计。 要使用 LLaMA-Factory 对 Qwen2.5 7B Instruct模型 进行 LoRA&#xff08;Low-Rank Adapters&#xff09;微调&#xff0c;流程与之前提到的 Qwen2 7B Instruct 模型类似。LoRA …

Python酷库之旅-第三方库Pandas(221)

目录 一、用法精讲 1036、pandas.DatetimeIndex.to_pydatetime方法 1036-1、语法 1036-2、参数 1036-3、功能 1036-4、返回值 1036-5、说明 1036-6、用法 1036-6-1、数据准备 1036-6-2、代码示例 1036-6-3、结果输出 1037、pandas.DatetimeIndex.to_series方法 10…