Rust in Action笔记 第五章 深入理解数据
如果希望看到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)
− ( 1 0 ) ; 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功能,包含加法器、乘法器,主要跟指令架构和数字表示有关;
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/638218.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!