前言

庖丁解牛 - <<庄子>>

庖丁为文惠君解牛,
手之所触, 肩之所倚, 足之所履, 膝之所踦, 砉然向然, 奏刀騞然, 莫不中音, 合于《桑林》之舞, 乃中《经首》之会.

文惠君曰:"嘻, 善哉! 技盍至此乎?"

庖丁释刀对曰:"臣之所好者, 道也, 进乎技矣.
始臣之解牛之时, 所见无非牛者.
三年之后, 未尝见全牛也.
方今之时, 臣以神遇而不以目视, 官知止而神欲行.
依乎天理, 批大郤, 导大窾, 因其固然, 技经肯綮之未尝, 而况大軱乎!
良庖岁更刀, 割也; 族庖月更刀, 折也. 今臣之刀十九年矣, 所解数千牛矣, 而刀刃若新发于硎.
彼节者有间, 而刀刃者无厚;以无厚入有间, 恢恢乎其于游刃必有余地矣!
是以十九年而刀刃若新发于硎.
虽然, 每至于族, 吾见其难为, 怵然为戒, 视为止, 行为迟.
动刀甚微, 謋然已解, 如土委地.
提刀而立, 为之四顾, 为之踌躇满志, 善刀而藏之."

文惠君曰:"善哉, 吾闻庖丁之言, 得养生焉."

 

测试代码(258.369double值转科学计数法)

  1. /// @file PositiveFloat.cpp
  2. /// @brief 将258.369 double值转为内存表示(科学计数法)
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. int main(int argc, char* argv[]) {
  6. /// 内存中是小端摆放
  7. /// 4070,25E0,0000,0000
  8. unsigned char cBuf[8] = {0x00, 0x00, 0x00, 0x00, 0xe0, 0x25, 0x70, 0x40};
  9. unsigned short usBuf[4] = {0x0, 0x0, 0x25e0, 0x4070};
  10. double* pdbl = NULL;
  11. pdbl = (double*)cBuf;
  12. printf("%f\n", *pdbl); ///< 258.367188
  13. pdbl = (double*)usBuf;
  14. printf("%f\n", *pdbl); ///< 258.367188
  15. return 0;
  16. }
  17. /**
  18. double值在内存中是8个字节(64bits)
  19. S = 1bits, (258.369是正数, S = 0)
  20. E = 11bits
  21. D = 52bits
  22. 258.369 double值转内存值
  23. 整数部分转2进制表示
  24. 258 / 2
  25. 129         0
  26. 129 / 2
  27. 64          1
  28. 64 / 2
  29. 32          0
  30. 32 / 2
  31. 16          0
  32. 16 / 2
  33. 8           0
  34. 8 / 2
  35. 4           0
  36. 4 / 2
  37. 2           0
  38. 2 / 2
  39. 1           0
  40. 整数部分的2进制表示为(从最后一个商念到第一个油余数)
  41. 100000010
  42. 小数部分转2进制表示(最多只算出8位小数的表示)
  43. 0.369 * 2
  44. 0.738           0
  45. 0.738 * 2
  46. 1.476
  47. 0.476           1
  48. 0.476 * 2
  49. 0.952           0
  50. 0.952 * 2
  51. 1.904
  52. 0.904           1
  53. 0.904 * 2
  54. 1.808
  55. 0.808           1
  56. 0.808 * 2
  57. 1.616
  58. 0.616           1
  59. 0.616 * 2
  60. 1.232
  61. 0.232           1
  62. 0.232 * 2
  63. 0.464           0
  64. 小数部分的2进制表示(从第一个进位念到最后一个进位)
  65. .01011110
  66. 整数 + 小数部分为
  67. 100000010.01011110 * 2^0
  68. 1.0000001001011110 * 2^8
  69. D = 0000001001011110 (不算整数部分的1)
  70. E = 1023 + 8 (2^8的指数值)
  71. = 1031
  72. = 100,0000,0111
  73. = 10000000111
  74. E值的2进制表示
  75. 1031 / 2
  76. 515         1
  77. 515 / 2
  78. 257         1
  79. 257 / 2
  80. 128         1
  81. 128 / 2
  82. 64          0
  83. 64 / 2
  84. 32          0
  85. 32 / 2
  86. 16          0
  87. 16 / 2
  88. 8           0
  89. 8 / 2
  90. 4           0
  91. 4 / 2
  92. 2           0
  93. 2 / 2
  94. 1           0
  95. 从最后一个商念到第一个余数
  96. 100,0000,0111
  97. 拼装SED
  98. 0,10000000111,0000001001011110
  99. 补齐D部分的0(52-16 = 36, 要补36个0)
  100. 0,10000000111,0000,0010,0101,1110,0000,0000,0000,0000,0000,0000,0000,0000,0000
  101. 最后的拼装结果
  102. 0100000001110000001001011110000000000000000000000000000000000000
  103. 将拼装结果变成16进制
  104. 0100,0000,0111,0000,0010,0101,1110,0000,0000,0000,0000,0000,0000,0000,0000,0000
  105. 4    0    7    0    2    5    E    0    0    0    0    0    0    0    0    0
  106. 407025E000000000
  107. 4070,25E0,0000,0000
  108. 16进制对照表
  109. 0000 = 0 0001 = 1 0010 = 2 0011 = 3
  110. 0100 = 4 0101 = 5 0110 = 6 0111 = 7
  111. 1000 = 8 1001 = 9 1010 = A 1011 = B
  112. 1100 = C 1101 = D 1110 = E 1111 = F
  113. */

测试代码(-258.369double值转科学计数法)

  1. /// @file PositiveFloat.cpp
  2. /// @brief 将-258.369 double值转为内存表示(科学计数法)
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. int main(int argc, char* argv[]) {
  6. /// 内存中是小端摆放
  7. /// C070,25E0,0000,0000
  8. unsigned char cBuf[8] = {0x00, 0x00, 0x00, 0x00, 0xe0, 0x25, 0x70, 0xC0};
  9. unsigned short usBuf[4] = {0x0, 0x0, 0x25e0, 0xC070};
  10. double* pdbl = NULL;
  11. pdbl = (double*)cBuf;
  12. printf("%f\n", *pdbl); ///< -258.367188
  13. pdbl = (double*)usBuf;
  14. printf("%f\n", *pdbl); ///< -258.367188
  15. return 0;
  16. }
  17. /**
  18. double值在内存中是8个字节(64bits)
  19. S = 1bits, (-258.369是负数, S = 1)
  20. E = 11bits
  21. D = 52bits
  22. 258.369 double值转内存值
  23. 整数部分转2进制表示
  24. 258 / 2
  25. 129         0
  26. 129 / 2
  27. 64          1
  28. 64 / 2
  29. 32          0
  30. 32 / 2
  31. 16          0
  32. 16 / 2
  33. 8           0
  34. 8 / 2
  35. 4           0
  36. 4 / 2
  37. 2           0
  38. 2 / 2
  39. 1           0
  40. 整数部分的2进制表示为(从最后一个商念到第一个油余数)
  41. 100000010
  42. 小数部分转2进制表示(最多只算出8位小数的表示)
  43. 0.369 * 2
  44. 0.738           0
  45. 0.738 * 2
  46. 1.476
  47. 0.476           1
  48. 0.476 * 2
  49. 0.952           0
  50. 0.952 * 2
  51. 1.904
  52. 0.904           1
  53. 0.904 * 2
  54. 1.808
  55. 0.808           1
  56. 0.808 * 2
  57. 1.616
  58. 0.616           1
  59. 0.616 * 2
  60. 1.232
  61. 0.232           1
  62. 0.232 * 2
  63. 0.464           0
  64. 小数部分的2进制表示(从第一个进位念到最后一个进位)
  65. .01011110
  66. 整数 + 小数部分为
  67. 100000010.01011110 * 2^0
  68. 1.0000001001011110 * 2^8
  69. D = 0000001001011110 (不算整数部分的1)
  70. E = 1023 + 8 (2^8的指数值)
  71. = 1031
  72. = 100,0000,0111
  73. = 10000000111
  74. E值的2进制表示
  75. 1031 / 2
  76. 515         1
  77. 515 / 2
  78. 257         1
  79. 257 / 2
  80. 128         1
  81. 128 / 2
  82. 64          0
  83. 64 / 2
  84. 32          0
  85. 32 / 2
  86. 16          0
  87. 16 / 2
  88. 8           0
  89. 8 / 2
  90. 4           0
  91. 4 / 2
  92. 2           0
  93. 2 / 2
  94. 1           0
  95. 从最后一个商念到第一个余数
  96. 100,0000,0111
  97. 拼装SED
  98. 1,10000000111,0000001001011110
  99. 补齐D部分的0(52-16 = 36, 要补36个0)
  100. 1,10000000111,0000,0010,0101,1110,0000,0000,0000,0000,0000,0000,0000,0000,0000
  101. 最后的拼装结果
  102. 1100000001110000001001011110000000000000000000000000000000000000
  103. 将拼装结果变成16进制
  104. 1100,0000,0111,0000,0010,0101,1110,0000,0000,0000,0000,0000,0000,0000,0000,0000
  105. C    0    7    0    2    5    E    0    0    0    0    0    0    0    0    0
  106. C07025E000000000
  107. C070,25E0,0000,0000
  108. 16进制对照表
  109. 0000 = 0 0001 = 1 0010 = 2 0011 = 3
  110. 0100 = 4 0101 = 5 0110 = 6 0111 = 7
  111. 1000 = 8 1001 = 9 1010 = A 1011 = B
  112. 1100 = C 1101 = D 1110 = E 1111 = F
  113. */

http://blog.csdn.net/lostspeed/article/details/50541910

将258.369 double值转为内存表示(科学计数法)的更多相关文章

  1. double数值多时系统默认科学计数法解决方法

    比如 Double d = new Double("1234567890.12"); System.out.println("d:="+d); java.tex ...

  2. POI导出复杂的excel;excel公共样式类;excel拼接定制类;数据科学计数法转为普通值

    一.excel公共样式类(包含数据科学计数法转为普通值) package com.thinkgem.jeesite.common.utils.excel; import org.apache.poi. ...

  3. 如何使java中double类型不以科学计数法表示

    在java中,把一个double或者BigDecimal的小数转换为字符串时,经常会用科学计数法表示,而我们一般不想使用科学计数法,可以通过:DecimalFormat a = new Decimal ...

  4. c# 科学计数法值转换成正常值,返回字符串

    /// <summary> /// 科学计数法值转换成正常值 /// </summary> /// <param name="value">&l ...

  5. C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现

      在C#中大家都会遇到这种情况 double类型的数据,需要格式化(保留N未有效数字)或者是保留N为小数等情况,我们往往采取double.tostring("参数");的方法.下 ...

  6. Jmeter、Java当double显示的数字过长时取消科学计数法显示

    今日,由于项目需要,使用Jmeter发送查询账户并不保存余额,经过交易后,进行运算后再次比对余额. 实施过程中获取了余额字段并赋值给一个double变量.变量进行运算后再与交易后的账户余额进行比对.这 ...

  7. java中Double类数字太大时页面正常显示而不要用科学计数法

    /** * 当浮点型数据位数超过10位之后,数据变成科学计数法显示.用此方法可以使其正常显示. * @param value * @return Sting */ public static Stri ...

  8. double转成string时,不以科学计数法表示

    用gson解析json串的时候,经常会自动把我想用string表示的内容转换成double,并且还是科学计数法,这一点也不科学,写个方法,格式化一下. public static String par ...

  9. fputcsv 导出excel,解决内存、性能、乱码、科学计数法问题

    在PHP的日常开发中,时常会需要导出 excel ,一般我们会使用 PHPExcel ,性能强大,但是在数据量大的时候,phpexcel 性能差.内存溢出等各种不可控问题就会出现.因此,如果对导出样式 ...

随机推荐

  1. Unity KillCount

    using UnityEngine; using System.Collections; public class KillCountMult : MonoBehaviour { public GUI ...

  2. setInterval定义与调用

    以下是一个倒计时,可以定义定时器为全局变量(ti2),或局部变量(ti). <script type="text/javascript" src="js/jquer ...

  3. Swipe JS滑动插件

    Swipe JS 是一个轻量级的移动滑动组件,支持 1:1 的触摸移动,阻力以及防滑性能都不错,可以让移动web应用展现更多的内容,能解决我们对于移动Web对滑动的需求. 官网:http://www. ...

  4. Python 模块(五)

    目录 模块介绍 time &datetime模块 random json & picle 一.模块介绍 在我们日常的程序开发过程中,随着代码越写越多,在单个文件里的代码就会越来越长,越 ...

  5. 同步fifo的verilogHDL设计实例

    原创 设计一个fifo,输入16bit,输出16bit的data,寻址宽度5bit,有空满标志. top 层如下所示: /* date : 2014/10/14 version : modelsim ...

  6. 将 jsp 页面的值 传到struts2 action中(不是表单中的值)

    JSP: 页面: <%@ page language="java"  pageEncoding="GBK"%> <%@taglib prefi ...

  7. 言未及之而言,谓之躁;言及之而不言,谓之隐;未见颜色而言,谓之瞽(gǔ)

    前言 一个高效的团队离不开leader和组员之前,组员和组员之前的通力合作.而合作的基础便是彼此之间的商讨与协调,意见的统一,进而在达成共识的前提下行动.那么如何才能和组员达成共识呢? 和组员之间的沟 ...

  8. u-boot分析——struct gd_t与struct bd_t

    gd_t和bd_t是u-boot中两个重要的数据结构,在初始化操作很多都要靠这两个数据结构来保存或传递.分别定义在./include/asm/global_data.h和./include/asm/u ...

  9. 利用MySQL 的GROUP_CONCAT函数实现聚合乘法

    MySQL 聚合函数里面提供了加,平均数.最小,最大等,可是没有提供乘法,我们这里来利用MYSQL现有的GROUP_CONCAT函数实现聚合乘法. 先创建一张演示样例表: CREATE TABLE ` ...

  10. Effective C++ Item 40 明智而审慎地使用多重继承

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:多重继承比单一继承复杂.它可能导致新的歧义性,以及对 virtual 继承的须要 演示 ...