用位域描述float和double值
来源:互联网 发布:啊哈算法 pdf 完整版 编辑:程序博客网 时间:2024/05/22 08:00
/// @file exam_1_1.cpp/// @brief 用位域描述float和double值#include <windows.h>#include <stdlib.h>#include <stdio.h>#include <stddef.h>#include <crtdbg.h>#include <conio.h>typedef struct _tag_bits_struct_float{ unsigned int data : 23; unsigned int exp : 8; unsigned int sign : 1;}TAG_BITS_STRUCT_FLOAT;typedef struct _tag_bits_struct_double{ /// 位域字段长度超过32Bits后, 必须要分成多段 /// data is 52 unsigned int dataL : 32; unsigned int dataH : 20; unsigned int exp : 11; unsigned int sign : 1;}TAG_BITS_STRUCT_DOUBLE;void fnUseBitsStructShowFloat(float fIn);void fnUseBitsStructShowDouble(double dblIn);int main(int argc, char *argv[ ], char *envp[ ]){ fnUseBitsStructShowFloat(3.75f); fnUseBitsStructShowDouble(3.75); printf("END, press any key to quit\n"); getchar(); return 0;}void fnUseBitsStructShowFloat(float fIn){ TAG_BITS_STRUCT_FLOAT* pBitStructFloat = (TAG_BITS_STRUCT_FLOAT*)&fIn; // 00 00 70 40 => low addr to high addr /** pBitStructFloat->sign = 0x0 pBitStructFloat->exp = 0x80 pBitStructFloat->data = 0x700000 */ printf("pBitStructFloat->sign = 0x%.1x\n" "pBitStructFloat->exp = 0x%.2x\n" "pBitStructFloat->data = 0x%.3x\n", pBitStructFloat->sign, pBitStructFloat->exp, pBitStructFloat->data);}void fnUseBitsStructShowDouble(double dblIn){ TAG_BITS_STRUCT_DOUBLE* pBitStructDouble = (TAG_BITS_STRUCT_DOUBLE*)&dblIn; // 00 00 00 00 00 00 0E 40 /** S = 0 double的E = 1023 + N E = 1 + 1023 = 1024 = 10000000000B D = 1110B = 1110 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000B */ /** pBitStructDouble->sign = 0x0 pBitStructDouble->exp = 0x400 pBitStructDouble->dataH = 0xe0000 pBitStructDouble->dataL = 0x0 */ printf("pBitStructDouble->sign = 0x%x\n" "pBitStructDouble->exp = 0x%x\n" "pBitStructDouble->dataH = 0x%x\n" "pBitStructDouble->dataL = 0x%x\n", pBitStructDouble->sign, pBitStructDouble->exp, pBitStructDouble->dataH, pBitStructDouble->dataL);}
0 0
- 用位域描述float和double值
- 12. Float和Double取值范围
- float double精度和取值范围
- 关于float和double
- float 和 double
- float 和 double
- double 和float区别
- 关于 float 和double
- Double 和 Float
- 142,Double和Float
- float和double
- float和double
- float和double
- c/c++: float和double、long double
- c/c++: float和double、long double
- Java的float和double
- float 和 double 精度问题
- double和float的区别
- 不能为虚拟电脑 打开一个新任务
- jsp中的c标签的用法
- MySQL命令大全
- C和指针4.4
- SCOPE_IDENTITY的用法
- 用位域描述float和double值
- 在 Win8 下安装 MongoDB
- 深度学习用于图片的分类和检测总结
- 关于内存管理的教程 -01-
- 修路方案
- poj 3669 Meteor Shower
- hdoj 一只小蜜蜂
- filter的作用
- GraphX编译