language-agnostic - 半字节在编程中的使用

标签 language-agnostic byte nibble

如标题所说的简单问题。我在 StackOverflow(和互联网)上看到了一些关于半字节用例的问题,但我不明白为什么我们需要使用半字节。我的意思是字节是计算中最小的内存单位,因此对它执行操作来操作它的一半似乎效率不高。例如有 article在 GeeksForGeeks 上关于以字节为单位交换半字节。因此,如果需要像 nibble 这样的东西,为什么在任何非古老的编程语言中都没有将其定义为数据类型(如 byteint 或任何其他类型)?

我知道位、半字节或字节的历史。还阅读维基百科文章并用谷歌搜索了很多东西来找到我问题的答案,但我做不到。也许这会被标记为基于意见和关闭,但我只是想就这个话题进行一些讨论,我不知道其他适合问同样问题的地方,所以请善待。

最佳答案

“不了解历史的人注定要重蹈覆辙。”作者:埃德蒙伯克

在过去,当内存稀缺(20​​K 被认为很多)时,终端更像是打字机(想想 keypunch )使用 BCD (二进制编码的十进制)。甚至关于 Nibble 的维基百科文章注释 BCD。

每个半字节代表一个十进制数字。半字节从 0 到 9,一个字节可以表示两位十进制数字。现在,当这些字节在 Green-bar 上的代码转储中打印时当您的程序崩溃时,您可以查看十六进制转储部分并将值直接读取为十进制数字,无需在头脑中将位二进制转换为十进制。

那么这是否意味着所有代码都是使用 BCD 编写的?不,如果您对某些值有疑问,您只需添加一些行以将值转换为 BCD(想想调试语句),然后读取转储中的 BDC,而不是进行所有转换。您可以尝试在 BCD 中完成所有工作,但与许多类型一样,有时并非所有功能都存在,因此您需要更改类型。与 BCD 相同,有时您无法用 BCD 做可以用整数做的事情。有道理吗?


添加评论中的问题

Is there any need for nibble right now in modern programming world? and if yes why ?

我不希望看到使用现代高级编程语言编译器创建的代码使用半字节,但对于微 Controller ,我不会惊讶地看到使用半字节。

基本上,如果一个半字节没有被硬编码为处理器指令集的一部分,我不希望看到一个半字节被使用。

关于language-agnostic - 半字节在编程中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69340060/

相关文章:

windows - 在 Windows 中生成专业图表

postgresql - 将 byte[] PBEKeySpec 存储到 openshift 齿轮表现不同?

delphi - WideChar 转换为字节?

C 可以处理子字节指令寻址吗?

javascript - 在 javascript 中从一个字节中获取两个半字节的最佳方法?

language-agnostic - 是否有一个用子树大小注释的二叉搜索树的实现

algorithm - 如何找到最小的 key 集?

algorithm - 后续: "Sorting" colors by distinctiveness

arrays - 通过 HTTP 将文件下载到 C# 中的字节数组中?

c - 最高有效半字节的十六进制