c 如何在 8 位槽中存储两位小数?

发布于 2024-12-09 00:52:05 字数 228 浏览 0 评论 0原文

c 如何在 8 位槽中存储两位小数?

#include "stdio.h"

main(){
  double x = 123.456;
  printf("\n %d - %e \n",sizeof(x),x);
}

输出:

8 - 23.456

x 的值正确为 123.456,但据说它只有 8 位。

How does c store a double decimal in an 8 bit slot?

#include "stdio.h"

main(){
  double x = 123.456;
  printf("\n %d - %e \n",sizeof(x),x);
}

outputs:

8 - 23.456

The value of x is correct being 123.456, but the supposedly it is only 8 bits.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

画▽骨i 2024-12-16 00:52:05

那不是8位。是8个字节。每个字节至少有 8 位(通常是 8 位)。

因此,double 可能是 8 * 8 = 64 位。

编辑:

sizeof() 运算符生成对象的大小以字节为单位

根据定义,“字节”是 char 的大小。 (这就是 C 标准定义“字节”一词的方式;它在其他上下文中可能具有不同的含义。)

字节中的位数由宏 CHAR_BIT 指定,在 < 中定义;limits.h>。您可能遇到的几乎所有系统都会有 CHAR_BIT == 8,但据我所知,DSP(数字信号处理器)的某些实现将 CHAR_BIT 设置为 16 或 32 。

That's not 8 bits. It's 8 bytes. And each byte is at least 8 bits (and usually exactly 8 bits).

So it's probably 8 * 8 = 64-bits for a double.

EDIT:

The sizeof() operator yields the size of an object in bytes.

A "byte" is by definition the size of a char. (That's how the C standard defines the word "byte"; it may have different meanings in other contexts.)

The number of bits in a byte is specified by the macro CHAR_BIT, defined in <limits.h>. Almost any system you're likely to encounter will have CHAR_BIT == 8, but I understand that some implementations for DSPs (Digital Signal Processors) have CHAR_BIT set to 16 or 32.

指尖微凉心微凉 2024-12-16 00:52:05

非常迂腐的是,sizeofsizeof char 的倍数返回操作数的大小。

在所有常见平台上,这意味着 sizeof 以字节为单位返回。

To be horribly pedantic sizeof return the size of the operand in multiples of sizeof char.

On all common platforms that means that sizeof returns in bytes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文