Rust in Action笔记 第五章 深入理解数据

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

你可能感兴趣的:(rust,笔记,开发语言)