半字节在编程中的使用

Usage of nibble in Programming

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

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

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

在过去,当内存稀缺(20​​K 被认为很多)时,终端更像是打字机(想想 keypunch) there was the use of BCD (Binary Coded Decimal). Even the Wikipedia article on Nibble notes 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 ?

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

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