- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了这个按预期运行的程序来了解 float 的位表示:
float x1=-675.78125;
int *pint1;
pint1=(int *)&x1;
for(int i=0;i<8*sizeof(float);i++)
{
if(*pint1&1)
{
cout<<1;
}
else
cout<<0;
*pint1>>=1;
}
但它不适用于双数:
double x=-675.78125;
int *pint;
pint=(int *)&x;
for(int i=0;i<8*sizeof(double);i++)
{
if(*pint&1)
{
cout<<1;
}
else
cout<<0;
*pint>>=1;
}
你能解释一下为什么会这样吗?你会怎么做?非常感谢您的帮助。
最佳答案
你的第一个程序似乎工作而你的第二个不工作的原因是对于你的特定硬件,float 的大小与 int 相同,而 int 没有足够的空间容纳所有位一个 double
。
但是你已经违反了严格的别名规则,所以如果你真的想打印浮点类型的位,正确的方法是转换为 unsigned char*
然后迭代 char 的每一位,同时递增基础浮点类型的每个字节的指针。另请注意,在 big-vs-little endian 上,您的程序的结果可能会有所不同。
关于c++ - 双数的位表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328993/
我正在尝试使用内联汇编进行试验,我正在尝试在内联汇编中添加十进制数(不,不是整数)。问题是,当我调用以下函数时: inline double ADD(double num1, double num2)
我有一个名为“a”的数据类型为 double 的数字,当这个数字小于 0.5 时,说b = 1 - a没有错误。但是当 a > 0.5 时,我说b = 1 - a代码中的该点存在错误(执行该特定行之前
我需要将双数添加到 ol 列表中。一个例子是: 欢迎访客1.1.介绍1.2.更多信息1.3.更多信息1.4.更多信息1.5.更多信息 另一个OL2.1.更多信息2.2.更多信息2.3.更多信息 我知道
我正在尝试将一些代码从 C++ 转换为 JavaScript,但我对 int、doubles、NaN 和解析 float 感到非常困惑。我想!? Z = T - 14 - (1); while (Z
我是一名优秀的程序员,十分优秀!