258.369f的科学记数法手工计算和验证
来源:互联网 发布:网络家庭摄像头直播 编辑:程序博客网 时间:2024/04/28 06:03
前言
卖油翁 - 欧阳修
陈康肃公尧咨善射,当世无双 ,公亦以此自矜。
尝射于家圃,有卖油翁释担而立,睨之,久而不去。
见其发矢十中八九,但微颔之。
康肃问曰:“汝亦知射乎?吾射不亦精乎?”
康肃问曰:“汝亦知射乎?吾射不亦精乎?”
翁曰:“无他, 但手熟尔。”
康肃忿然曰:“尔安敢轻吾射?”
翁曰:“以我酌油知之。”
乃取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔入,而钱不湿。
因曰:“我亦无他, 惟手熟尔。”
康肃笑而遣之。
隔了一段时间不用, float值转内存表示又忘了细节, 杯具...
试验代码(258.369)
/// @file \exam_float_ieee\byIde\main.cpp/**浮点数(float, double)科学计数法的手工计算浮点数都要手工计算, 算完后, 用计算机内存赋值法, 看计算的是否正确.将浮点数表示的科学计数法值, 转成浮点数.*/#include "stdlib.h"#include "stdio.h"int main(int argc, char* argv[]) { // 258.369f ieee = 43812F00 // 43,81,2F,00 // 内存中是小端摆放 unsigned char cBuf[4] = {0x00, 0x2F, 0x81, 0x43}; float* pf = (float*)cBuf; printf("%f\n", *pf); /** run result 258.367188 */ return 0;}/** 浮点数(float, double)科学计数法的手工计算 1. 浮点数(float)科学计数法的手工计算 float fObj = 258.369f 科学计数法结果, 一共4字节, 32bits S = 1 bits E = 8 bits D = 23 bits 258.369f 是正数 S = 0 // 算整数部分科学计数法值 258 / 2 129 0 129 / 2 64 1 64 / 2 32 0 32 / 2 16 0 16 / 2 8 0 8 / 2 4 0 4 / 2 2 0 2 / 2 1 0 从最后一个商念到第一个余数为1000,00010 整数部分为 100000010 // 算小数部分科学计数法值, 最多算8位的科学计数小数部分 0.369 0.369 * 2 0.738 0 0.738 * 2 1.476 0.476 1 0.476 * 2 0.952 0 0.952 * 2 1.904 0.904 1 0.904 * 2 1.808 0.808 1 0.808 * 2 1.616 0.616 1 0.616 * 2 1.232 0.232 1 0.232 * 2 0.464 0 从第一个进位念到最后一个进位 0101,1110 01011110 258.369f = 100000010.01011110B = 1.0000001001011110B * 2^8 S = 0 (整数) E = 127 + 8 ///< 取2^8的指数值8 = 135 135 / 2 67 1 67 / 2 33 1 33 / 2 16 1 16 / 2 8 0 8 / 2 4 0 4 / 2 2 0 2 / 2 1 0 /// 指数部分 /// 从最后一个商读到第一个余数 : 1000,0111 /// 10000111 D = 0000001001011110 (1.0000001001011110B * 2^8 的小数部分) = 0000,0010,0101,1110,0000,000 (补足7个0, 凑成23位) = 00000010010111100000000 SED = 0,10000111,00000010010111100000000 = 01000011100000010010111100000000 = 0100,0011,1000,0001,0010,1111,0000,0000 = 4 3 8 1 2 F 0 0 = 43812F00 16进制数比对表 0000 = 0 0001 = 1 0010 = 2 0011 = 3 0100 = 4 0101 = 5 0110 = 6 0111 = 7 1000 = 8 1001 = 9 1010 = A 1011 = B 1100 = C 1101 = D 1110 = E 1111 = F */
试验代码(-258.369)
/// @file \exam_float_ieee\byIde\main.cpp/**浮点数(float, double)科学计数法的手工计算浮点数都要手工计算, 算完后, 用计算机内存赋值法, 看计算的是否正确.将浮点数表示的科学计数法值, 转成浮点数.*/#include "stdlib.h"#include "stdio.h"int main(int argc, char* argv[]) { // -258.369f ieee = C3812F00 // C3,81,2F,00 // 内存中是小端摆放 unsigned char cBuf[4] = {0x00, 0x2F, 0x81, 0xC3}; float* pf = (float*)cBuf; printf("%f\n", *pf); /** run result -258.367188 */ return 0;}/** 浮点数(float, double)科学计数法的手工计算 1. 浮点数(float)科学计数法的手工计算 float fObj = -258.369f 科学计数法结果, 一共4字节, 32bits S = 1 bits E = 8 bits D = 23 bits -258.369f 是负数 S = 1 // 算整数部分科学计数法值 258 / 2 129 0 129 / 2 64 1 64 / 2 32 0 32 / 2 16 0 16 / 2 8 0 8 / 2 4 0 4 / 2 2 0 2 / 2 1 0 从最后一个商念到第一个余数为1000,00010 整数部分为 100000010 // 算小数部分科学计数法值, 最多算8位的科学计数小数部分 0.369 0.369 * 2 0.738 0 0.738 * 2 1.476 0.476 1 0.476 * 2 0.952 0 0.952 * 2 1.904 0.904 1 0.904 * 2 1.808 0.808 1 0.808 * 2 1.616 0.616 1 0.616 * 2 1.232 0.232 1 0.232 * 2 0.464 0 从第一个进位念到最后一个进位 0101,1110 01011110 258.369f = 100000010.01011110B = 1.0000001001011110B * 2^8 S = 0 (整数) E = 127 + 8 ///< 取2^8的指数值8 = 135 135 / 2 67 1 67 / 2 33 1 33 / 2 16 1 16 / 2 8 0 8 / 2 4 0 4 / 2 2 0 2 / 2 1 0 /// 指数部分 /// 从最后一个商读到第一个余数 : 1000,0111 /// 10000111 D = 0000001001011110 (1.0000001001011110B * 2^8 的小数部分) = 0000,0010,0101,1110,0000,000 (补足7个0, 凑成23位) = 00000010010111100000000 SED = 1,10000111,00000010010111100000000 = 11000011100000010010111100000000 = 1100,0011,1000,0001,0010,1111,0000,0000 = C 3 8 1 2 F 0 0 = C3812F00 16进制数比对表 0000 = 0 0001 = 1 0010 = 2 0011 = 3 0100 = 4 0101 = 5 0110 = 6 0111 = 7 1000 = 8 1001 = 9 1010 = A 1011 = B 1100 = C 1101 = D 1110 = E 1111 = F */
0 0
- 258.369f的科学记数法手工计算和验证
- 手工计算浮点数到16进制科学记数法的辅助验证工具
- hive 调用java的函数和科学记数法转换
- Struts中float的科学记数法
- 科学记数法
- hdu1178(科学记数法)
- 科学记数法
- PATB1024:科学记数法
- 将科学记数法的数字转换为字符串
- Java 高精度BigDecimal[科学记数法的补充]
- Julia科学记数法格式输出问题
- cf 619c 科学记数法
- cf 619c 科学记数法1
- Excel 取消科学记数法显示
- PAT乙级1024 科学记数法
- 1024科学记数法(字符串处理)
- 处理excel数字科学记数法
- 完美解决access双精度和单精度字段内容变成科学记数法
- CART分类与回归树
- 关于c语言中随机数生成连续播种的问题(初学者向)
- Swift - 触摸事件(点击,移动,抬起等)说明及用例
- 【elasticsearch】使用工具迁移索引数据
- Echart 画图表工具
- 258.369f的科学记数法手工计算和验证
- TCP协议和UDP协议的简要区别及其三次握手过程和TCP协议首部格式简介
- 【Android】如何查看Activity Task栈的情况
- 斐讯 PSG1208 K1 免拆机刷breed 不死uboot
- 函数返回值为数组
- symfony生成数据库表实体
- Redis 列表(List)
- Java:类与继承
- hdu3486Interviewe【RMQ】附模板