【PhysUnits】14 二進制數的標準化表示(standardization.rs)

一、源碼

這段代碼主要用于處理二進制數的標準化表示。它定義了兩個特質(trait) IfB0 和 IfB1,以及它們的實現,用于處理二進制數的前導零及前導一的簡化。

use super::basic::{B0, B1, Z0, N1, Integer, NonZero, NonNegOne};/// 處理 B0<H> 類型的標準化
/// Standardization for B0<H> types
///
/// 當高位 H 為 Z0 時,將 B0<Z0> 轉換為 Z0
/// Converts B0<Z0> to Z0 when higher bit H is Z0
pub trait IfB0 {type Output;fn standardization() -> Self::Output;
}/// 處理 B1<H> 類型的標準化  
/// Standardization for B1<H> types
///
/// 當高位 H 為 N1 時,將 B1<N1> 轉換為 N1
/// Converts B1<N1> to N1 when higher bit H is N1
pub trait IfB1 {type Output;fn standardization() -> Self::Output;
}// ==================== IfB0 實現 ====================
impl<I: Integer + NonZero> IfB0 for I {type Output = B0<I>;#[inline]fn standardization() -> Self::Output {B0::new()}
}impl IfB0 for Z0 {//去除B0<Z0>type Output = Z0;#[inline]fn standardization() -> Self::Output {Z0::new()}
}// ==================== IfB1 實現 ====================
impl<I: Integer + NonNegOne> IfB1 for I {type Output = B1<I>;#[inline]fn standardization() -> Self::Output {B1::new()}
}impl IfB1 for N1 {//去除B1<N1>type Output = N1;#[inline]fn standardization() -> Self::Output {N1::new()}
}

二、導入和依賴

use super::basic::{B0, B1, Z0, N1, Integer, NonZero, NonNegOne};
  • 從父模塊中導入了一些基本類型和標記trait:

    • B0, B1:表示二進制位的0和1

    • Z0, N1:單獨使用表示零和負一,也可以是符號位

    • Integer, NonZero, NonNegOne:標記trait用于類型約束

三、IfB0 trait

pub trait IfB0 {type Output;fn standardization() -> Self::Output;
}

這個trait用于處理以B0開頭的二進制數的標準化:

  • 當高位是Z0時,將B0轉換為Z0(去除前導零)

  • 否則保留B0結構

實現部分:
impl<I: Integer + NonZero> IfB0 for I {type Output = B0<I>;fn standardization() -> Self::Output { B0::new() }
}impl IfB0 for Z0 {type Output = Z0;fn standardization() -> Self::Output { Z0::new() }
}
  • 第一個實現:對于任何非零整數類型I,B0保持不變

  • 第二個實現:特殊處理B0,將其簡化為Z0

四、IfB1 trait

pub trait IfB1 {type Output;fn standardization() -> Self::Output;
}

這個trait用于處理以B1開頭的二進制數的標準化:

  • 當高位是N1時,將B1轉換為N1

  • 否則保留B1結構

實現部分:
impl<I: Integer + NonNegOne> IfB1 for I {type Output = B1<I>;fn standardization() -> Self::Output { B1::new() }
}impl IfB1 for N1 {type Output = N1;fn standardization() -> Self::Output { N1::new() }
}
  • 第一個實現:對于任何不是N1的整數類型I,B1保持不變

  • 第二個實現:特殊處理B1,將其簡化為N1

五、代碼作用總結

這段代碼實現了一個類型級的二進制數標準化系統:

  1. 消除前導零(如B0 → Z0)

  2. 簡化負數前導一(如B1 → N1)

  3. 保持其他有效二進制數的結構不變

這種技術常見于類型級編程中,用于在編譯時保證數據的規范形式,通常用于嵌入式領域或需要編譯時計算的應用中。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/84708.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/84708.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/84708.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

將 ubutun 的網絡模式 從NAT 改到 橋接模式后,無法上網,linux 沒有IP地址 的解決方案

首先要將 ubutun 的網絡模式設置為橋接模式 這里再從 NAT 模式改動成 橋接模式的時候&#xff0c;還出現了一個問題。改成橋接模式后&#xff0c;linux沒有ip地址了。原因是 不知道什么時候 將 虛擬網絡編輯器 中的值改動了 要選擇這個 自動 選項

多模態大語言模型arxiv論文略讀(九十)

Hybrid RAG-empowered Multi-modal LLM for Secure Data Management in Internet of Medical Things: A Diffusion-based Contract Approach ?? 論文標題&#xff1a;Hybrid RAG-empowered Multi-modal LLM for Secure Data Management in Internet of Medical Things: A Di…

電腦主板VGA長亮白燈

電腦主板VGA長亮白燈 起因解決方法注意事項&#xff1a; 起因 搬家沒有拆機整機在車上晃蕩導致顯卡松動接觸不良&#xff08;一般VGA長亮白燈都和顯卡有關&#xff0c;主要排查顯卡&#xff09; 解決方法 將顯卡拆下重新安裝即可 注意事項&#xff1a; 不可直接拔下顯卡&a…

【監控】pushgateway中間服務組件

Pushgateway 是 Prometheus 生態中的一個中間服務組件&#xff0c;以獨立工具形式存在&#xff0c;主要用于解決 Prometheus 無法直接獲取監控指標的場景&#xff0c;彌補其定時拉取&#xff08;pull&#xff09;模式的不足。 其用途如下&#xff1a; 突破網絡限制&#xff1…

打造AI智能旅行規劃器:基于LLM和Crew AI的Agent實踐

引言 今天來學習大佬開發的一個AI驅動的旅行規劃應用程序&#xff0c;它能夠自動處理旅行規劃的復雜性——尋jni找航班、預訂酒店以及優化行程。傳統上&#xff0c;這個過程需要手動搜索多個平臺&#xff0c;常常導致決策效率低下。 通過利用**代理型人工智能&#xff08;Age…

21. 自動化測試框架開發之Excel配置文件的測試用例改造

21. 自動化測試框架開發之Excel配置文件的測試用例改造 一、測試框架核心架構 1.1 組件依賴關系 # 核心庫依賴 import unittest # 單元測試框架 import paramunittest # 參數化測試擴展 from chap3.po import * # 頁面對象模型 from file_reader import E…

如何在電力系統中配置和管理SNTP時間同步?

在電力系統中配置和管理 SNTP 時間同步需結合行業標準&#xff08;如《DL/T 1100.1-2019》&#xff09;和分層架構特點&#xff0c;確保安全性、可靠性和精度適配。以下是具體操作指南&#xff0c;涵蓋架構設計、設備配置、安全管理、運維監控四大核心環節&#xff0c;并附典型…

MTK-關于HW WCN的知識講解

前言: 最近做項目過程中和硬件打交道比較多,現在關于整理下硬件的HW wcn的知識點 一 MTK常見的MT6631 Wi-Fi 2.4GHz 匹配調諧指南 ?拓撲結構選擇? 推薦采用并聯電容拓撲(?shunt cap topology?)代替并聯電感拓撲(?shunt inductor topology?),以減少潛在電路設計…

(1)課堂 1--5,這五節主要講解 mysql 的概念,定義,下載安裝與卸載

&#xff08;1&#xff09;謝謝老師&#xff1a; &#xff08;2&#xff09;安裝 mysql &#xff1a; &#xff08;3&#xff09;鏡像下載 &#xff0c;這個網址很好 &#xff1a; &#xff08;4&#xff09; 另一個虛擬機的是 zhang 123456 &#xff1a; 接著配置…

U-Boot ARMv8 平臺異常處理機制解析

入口點&#xff1a;arch/arm/cpu/armv8/start.S 1. 判斷是否定義了鉤子&#xff0c;如有則執行&#xff0c;否則往下走。執行save_boot_params&#xff0c;本質就是保存一些寄存器的值。 2. 對齊修復位置無關碼的偏移 假設U-Boot鏈接時基址為0x10000&#xff0c;但實際加載到0…

mysql安裝教程--筆記

一、Windows 系統安裝 方法1&#xff1a;使用 MySQL Installer&#xff08;推薦&#xff09; 1. 下載安裝包 訪問 MySQL 官網下載頁面&#xff0c;選擇 MySQL Installer for Windows。 2. 運行安裝程序 雙擊下載的 .msi 文件&#xff0c;選擇安裝類型&#xff1a; ? Developer…

投資策略規劃最優決策分析

目錄 一、投資策略規劃問題詳細 二、存在最優投資策略&#xff1a;每年都將所有錢投入到單一投資產品中 &#xff08;一&#xff09;狀態轉移方程 &#xff08;二&#xff09;初始條件與最優策略 &#xff08;三&#xff09;證明最優策略總是將所有錢投入到單一投資產品中…

NGINX HTTP/3 實驗指南安裝、配置與調優

一、HTTP/3 簡介 基于 QUIC&#xff1a;在 UDP 之上實現的多路復用傳輸&#xff0c;內置擁塞控制與前向糾錯&#xff0c;無需三次握手即可恢復連接。零 RTT 重連&#xff1a;借助 TLS 1.3&#xff0c;實現連接恢復時的 0-RTT 數據發送&#xff08;視底層庫支持&#xff09;。多…

編程日志5.28

string賦值操作 算法: #include<iostream> using namespace std; int main() { //1.字符串常量的賦值 string s1; s1 = "英雄哪里出來"; cout << s1 << endl; //2.字符串變量的賦值 string s2; s2 = s1; cout <…

AE的ai圖層導到Ai

AE的ai圖層導到ai 解決方法: 1、打開ai軟件&#xff0c;不用新建&#xff0c;留在那就行。 2、在AE里選中任意一個ai文件圖層&#xff0c;只需同時按住ctrl和英文字母鍵&#xff0c;圖層就會自動全部導入到ai中 英文字母鍵的詳情可以參考&#xff1a;http://www.yayihouse.co…

【Springboot+LangChain4j】Springboot項目集成LangChain4j(下)

前置條件&#xff1a;根據上篇文章完成springboot初步集成LangChain4j 【SpringbootLangChain4j】根據LangChain4j官方文檔&#xff0c;三分鐘完成Springboot項目集成LangChain4j&#xff08;上&#xff09;-CSDN博客 但是接口方法中&#xff0c;關于大模型的配置都是寫死的&a…

好壞質檢分類實戰(異常數據檢測、降維、KNN模型分類、混淆矩陣進行模型評估)

任務 好壞質檢分類實戰 task: 1、基于 data_class_raw.csv 數據&#xff0c;根據高斯分布概率密度函數&#xff0c;尋找異常點并剔除 2、基于 data_class_processed.csv 數據&#xff0c;進行 PCA 處理&#xff0c;確定重要數據維度及成分 3、完成數據分離&#xff0c;數據分離…

以少學習:通過無標簽數據從大型語言模型進行知識蒸餾

Learning with Less: Knowledge Distillation from Large Language Models via Unlabeled Data 發表&#xff1a;NNACL-Findings 2025 機構&#xff1a;密歇根州立大學 Abstract 在實際的自然語言處理&#xff08;NLP&#xff09;應用中&#xff0c;大型語言模型&#xff08…

EasyExcel使用

EasyExcel 簡介 EasyExcel 是阿里巴巴開源的一個基于 Java 的簡單、省內存的讀寫 Excel 工具。在處理大量數據時&#xff0c;它能極大地減少內存占用&#xff0c;提高性能。下面從依賴配置、模板使用到代碼調用&#xff0c;進行詳細介紹。 添加依賴 若要在項目里使用 EasyEx…

文件類型匯總

一、文檔類文件 Microsoft Office 文檔&#xff1a;.doc、.docx&#xff08;Word 文檔&#xff09;、.xls、.xlsx&#xff08;Excel 表格&#xff09;、.ppt、.pptx&#xff08;PowerPoint 演示文稿&#xff09; OpenOffice/LibreOffice 文檔&#xff1a;.odt&#xff08;文字…