【问题标题】:Where did the datatypes get their name from?数据类型的名称从何而来?
【发布时间】:2011-04-18 17:10:53
【问题描述】:

为什么是位,叫位。为什么一个字节是 8 位?是什么让人们将 16 位称为 Word,等等。他们的别名从何而来,为何而来?

我希望其他人包含基本的 ASM 类型,然后扩展到 C/C++ 并继续使用 SQL 和类似的数据类型。

  1. 1 位
    1. Bit - binary Unit
    2. Bool - 以布尔逻辑的发明者 George Boole 命名。
  2. 4 位
    1. 半字节 - 字节大小的一半。
  3. 8 位
    1. 字节 - Coined from "bite" but respelled to avoid accidental mutation to "bit"
    2. 字符
    3. 八位字节 - Is a grouping of eight bits, from the Latin "octo" meaning "eight".
  4. 16 位
    1. 字(无符号整数)
    2. 短(有符号整数)
  5. 32 位
    1. 双字
    2. int(有符号整数)
    3. 无符号(无符号整数)
    4. 浮点数(4 字节浮点数)

【问题讨论】:

  • 请注意,在 C++ 中,数据类型占用的位数取决于实现。例如,一个 char 可以是 7 位。
  • AFAIK 一个字节是底层机器的原生小数据类型。有些机器没有 8bit 字节。
  • 浮点数并不总是占用 32 位也可以这样说。但我只是想把基本数据类型记下来,这样我就可以理解为什么它们以这种方式命名。我希望人们一旦了解了数据类型名称的基础,就会更好地了解如何使用它。
  • @Space: No. char 必须至少为 8 位。顺便说一句,有 char == ... == long == 32bit 的机器。
  • 您指定的尺寸在很多语言和很多硬件上都是错误的。例如,双字是 x86 特有的(大多数 32 位 CPU 只是将一个字定义为 32 位)

标签: c++ c assembly types sqldatatypes


【解决方案1】:

维基百科是你的朋友:

  • bit
  • nibble
  • byte
  • “char”只是“字符”的缩写
  • “short”是“short int”的别名
  • word“是 CPU 可以处理的本机或最有效的大小”(感谢 Tony 指出这一点)。
  • “int”是“整数”的缩写。大小未定义(可以是 16、32 或 64 位)。
  • “float”是“浮点数”的缩写
  • “double”是“双精度浮点数”的缩写

【讨论】:

  • 我认为这证明你可以在这里提出一个愚蠢的问题并得到一个明智的答案。谢谢@Aaron。
  • 我理解“单词”是 CPU 可以处理的本机或最有效的大小 - 无类型的内存量。这可以与 int 进行比较和对比,虽然 numeric 最初也意味着在不影响效率的情况下根据最大效用(范围)来调整大小,但考虑到 CPU 有时具有几个同样有效的大小,并且已经施加了某些限制和期望int (特别是给定 long,long long),两者的大小实际上可能不同。不一定是最小的。有什么可以支持你的说法吗?我可以引用en.wikipedia.org/wiki/Word_(computing)
  • @Tony,同意。我也想看看这个来源。引用 Donald Knuth 的话会起作用,如果他写过的话。我知道这个词是用来表示CPU的最小可寻址数据单元,但是为什么叫它一个词呢?是不是因为人类用文字交流,而字母(比特)构成了这些文字。我正在寻找这些名称的基础。
  • @Mark:“同意...单词...表示[s]最小的”right 位到一个方便的字大小的寄存器中)。但是单词在问题域级别通常在数字上有意义:对于最常用的数字范围足够大 - 在含义级别上是离散的 - 就像人类语言 word,而不是音节不能独立解释。
  • @Mark:单词不是最小的可寻址单元。 (通常是一个字节)。如果你想要一个反例,你现在使用的 x86 CPU 将一个字定义为 16 位宽,但最小的可寻址单元仍然是一个 8 位字节(或八位字节)。
【解决方案2】:

Aaron 忘记了 Bool:这可以追溯到逻辑学家 Boole,他被认为是“布尔”逻辑的发明。

【讨论】:

    【解决方案3】:
    • bit 是一个二进制数字。
    • 浮点数应该清晰(浮点语义)

    其余的,我只能猜测

    【讨论】:

    • 所以它被称为bit,因为它是binary digit?
    • 我一直以为是binary digit ;)
    【解决方案4】:

    我一直认为 8 位被称为 Octet,你生活和学习。 ;)

    【讨论】:

    • 不是电信人叫字节字节吗?
    • @Jdv,八位字节不是最正确的名称吗?这让我们想到了使用 4 个字节(在这种情况下实际上称为八位字节)构成 IP 地址的 IP 地址。
    • @jdv:法国人似乎经常这样做。
    • @snemarch,所以这是一个文化问题?这是否意味着 IP 地址的发明者是法国人?
    • 一个八位字节是一个明确的术语,表示 8 位的有序集合。字节是计算机上最小的可寻址单元,现在几乎总是 8 位。在网络协议中,使用八位字节是为了完全明确,因为根据定义,您不是在谈论特定的计算机体系结构。例如,如果您将 IP 地址定义为 4 个字节而不是 4 个八位字节,则 PDP 10 系统程序员将为您编写一个具有 36 位 IP 地址的网络堆栈。
    【解决方案5】:

    您可能会问: 为什么m叫米?为什么1km用1000m表示?

    深思熟虑的问题......以简单的方式思考。不要让自己紧张。

    【讨论】:

    • 为什么计量一米的科学单位是m?因为,m 是米的第一个字母,并且 m 没有被任何其他度量单位重新计算。 Kilo,(符号“k”小写)是公制中的单位前缀,表示一千。
    【解决方案6】:

    您对带符号的 short/int/long/word/dword 的约定不仅仅是 x86 主义;这是一个 Windows 主义(短/长/字/双字)。当标准 (u)intN_t 类型对几乎每个人来说都更清楚时,我不明白为什么 Windows 程序员如此喜欢它们。

    我不认为 x86自然自带“字”和“双字”;寄存器是 al,ah(8 位)、ax(16 位)、eax(32 位)。不过,我忘记了您如何指定内存-内存移动的大小。

    M68K 指令具有 .b(字节)、.w(字)和 .l(长)后缀。没有双/四字 IIRC。

    ARM有ldb(字节)、ldh(半字)、ldr(寄存器)。

    PPC 有字节、半字、字和双字 IIRC。

    一般来说,谈论“字长”是没有意义的,因为它高度依赖于架构,即使这样它也倾向于改变(我怀疑现代 x86 是否实现了 16 位算术)比 32 位算术更快)。

    然后还有“指针大小”的定义,但是amd64只有48位虚拟地址(前17位应该是全1或者全0)。

    【讨论】:

    • 我不知道为什么有人击倒了你,因为我觉得这很有见地。所以 +1 给你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 2020-10-04
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多