算法和数据结构

1. float类型的表示:

https://www.cnblogs.com/cppskill/p/5487425.html

float一共32位,其结构定义如下:

|- 31-|----- 30-23 ----- |-------------- 22-0 --------------|

符号位(sign) 指数部分(exp)       小数部分(mag)

sign:符号位就一位,0表示正数,1表示负数

exp: 指数部分,无符号正数

mag:小数部分,定点小数,小数点在最左边。

float的表达式 :  pow(-1,sign)  *  (1+mag)  * pow(2,exp-127)

当阶码E为全0且尾数M也为全0时,表示的真值X为零,结合符号位S为0或1,有正零和负零之分。当阶码E为全1且尾数M也为全0时,表示的真值X为无穷大(∞),结合符号位S为0或1,有+∞和-∞之分。这样,在32位浮点数表示中,要除去E用全0和全1(255)表示零和无穷大的特殊情况,因此,阶码E的取值范围变为1~254,指数的偏移量不选128(10000000B),而选127(01111111B)。对于32位规格化浮点数,真正的指数值e为-126~+127,因此,数的绝对值的范围是2^-126~2^127≈10-38~1038。

 

实数转二进制float类型的方法:

A. 分别将实数的整数和小数转换为二进制

B. 左移或者右移小数点到第一个有效数字之后

C. 从小数点后第一位开始数出23位填充到尾数部分

D. 把小数点移动的位数,左移为正,右移为负,加上偏移量127,将所得的和转换为二进制填充到指数部分

E. 根据实数的正负来填充符号位,0为正,1为负

 

2. thrust::sort_by_key可以直接排序两个长度相同的数组,不需要放到struct里作为一个数组来排序!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值