去咖啡馆,Zinho,让我们来谈谈
我偶然发现了谈话,然后继续(〜行动〜)编程
在我工作的日常生活中,与字节中的数据集一起工作正在反复出现。在这些日子中,我以一个预期接收字节的差异中存储了整个“建模”,类似于图像01的示例。
的示例。
当我去检查此方差中包含的值时,我意识到了它的负,转换和存储的值。
原理,我不明白其原因。
研究后,我发现内部Java实现了两个时间补充算法与原始类型的字节数据。
简而
如果您想在要点中为上述代码做出贡献,请转到:
TwosComplement.java
Java中使用的算法的实现
定义字节的原始数据类型
首先,有必要了解原始数据结构,因此请考虑Byte在Java文档中的定义:
字节:字节数据类型是8位签名的两个补体整数。它的最小值为-128,最大值为127(包括)。
字节数据类型可用于保存内存的内存,其中存储器节省实际上很重要。
它们也可以用来代替INT的限制来阐明您的代码;变量范围有限的事实可以用作文档的一种形式。”
Fonte [2]
更奇怪地意识到差异,我们可以总结以上定义比较上述数据类型:
imagem 03 - 示例do tamanho em bits dos tipos pripitivos int e byte no java。
入口,正如它在引用的文档中所说的那样,使用字节数据类型的目的是保存硬件中可用的内部记忆。此外,限制数据的位宽度意味着提高处理或底部跟踪的性能。
Java中实现的算法:
代码02'算法作为Java的Padrã£实现。
如果您想在要点中为上述代码做出贡献,请转到:
JavaTwosComplement.java
执行
该设备的寿命是理论,不是吗? ð7
因此,我还带来了一个可执行的示例,以模拟上述两种算法的结构。
代码03 java中的类别具有两个已实现补充的补充。
如果您想为上述贡献,只需单击“打开”。
那么,使用此算法的优点是什么?
1.较低数据消耗的标准化
如前所述,Java定义了原始类型字节的大小为八位,根据标准。
也就是说,在必要时,使用此数据执行的董事会最简单,可以执行,并且对硬件的要求很少。
2.总和减法,而无需检查操作数的信号
在这一点上,重要的是要突出以下差异:
考虑到原始算法上方的陈述,下图04显示了一个正面和另一个负面计算的示例。
要执行此计算,不必检查每个操作的信号。只需找到负数的两个补充,并考虑汇总总和规则。
该算法还说,十进制数字的BAM的总和与两个结合两个应为零。此检查在图像04的项目1.2中进行了证明。
图像04使用两个补充的sum/actraction操作的示例。
来源
01 - Artigo na Wikipedia ;
02 - Java makes use of the "two's complement" for representing signed numbers | by Jean Villete ;
03 - Two's complement solution very detailed explanation | by kapkan ;
您有生命还是有建议?
在这里发表评论或在我的任何网络中给我打电话。
它花费了!广告 ”