- 如果希望看到f32类型的数转换成整型数字u32类型,需要在unsafe包裹下调用
std::mem::transmute(data)
,因为在安全的Rust语法中没有把整型数据按照bit转换成浮点数据的实现,如果想要看到浮点数的二进制输出(通过{:b}
),需要先通过unsafe把浮点数转换成整型数再输出; - 大端(big endian)和小端(little endian)区别在于大端表示法的高位先写,例如123,高位为1,低位为3,大端表示法的写法是123,小端表示法的写法是321,大小端的高低位的单位通常是字节Byte;
- 浮点数的构成,符号位(sign),有效数(mantissa),底数(base),指数(exponent),图5.1给出了一个32位的浮点数的组织方式;
- 单目运算符负号
-
的优先级低于方法调用,所以对于一个负数调用其方法的时候要用括号包裹起来,例如(-1.0)_f32.powf(0.0)
和-1.0_f32.powf(0.0)
的逻辑是不一样的,前者是 ( − 1 ) 0 (-1)^0 (−1)0 而后者是 − ( 1 0 ) -(1^0) −(10); PartialEq
可以让数据通过等号==
来比较,即只需要值相等即可,Eq
可以让数据转化成任何合理的值来进行比较,要求数据在bit级别都要相等(可能存在某些表示法让不同的bitmap值相等的情况),Eq
的要求比PartialEq
更加严格,Eq的调用可以用person1.eq(&person2)
;- 为自定义数据实现
std::convert::From
可以实现通用数据类型自动转换成自定义数据,具体可见Page155; - 可以为模块(mod)、类型(struct)、枚举(enum)等加上前缀
pub
来使之成为公有的,pub的使用有多种类型,pub(crate)
可以暴露给整个crate的其他模块,pub(super)
仅暴露给父模块,pub(in path)
仅暴露给指定路径的模块,pub(self)
显式地声明该模块是私有的(private); - 5.7节实现了一个简单的CPU功能,包含加法器、乘法器,主要跟指令架构和数字表示有关;