2012-10-20 184 views
1

我可能提出这个问题有点不对。我需要用纸和笔以十六进制计算IPv4头校验和。在这个链接http://en.wikipedia.org/wiki/IPv4_header_checksum 他们做的最后一个例子。加十六进制

我有点问题了解他们如何直接计数在十六进制。当在纸上做什么如果我得到一个超过15的数字例如48我将使用什么提示,我会写什么?

任何人都可以解释如何处理这个问题?

谢谢你,对不起制定的问题错了,但我现在已经改变了它:)

+0

添加在哪里?在计算器中?在编程语言中?用手? –

回答

0

十六进制是一个数字只是一种表象。为了让计算机帮助您进行添加,您必须将十六进制表示的数字转换为数字本身,然后执行添加并将其转换回来。这不是对二进制的转换,因为二进制也只是一种不同的表示。

如果你不想从十六进制转换,你将不得不解释为什么你不想进行这种转换。

+0

我可能解释错了。但是我计算IPv4头校验和,然后有很多十六进制a,所以转换为二进制文件需要更长的时间。如果你在最后一个例子中检查这个链接:http://en.wikipedia.org/wiki/IPv4_header_checksum&你能解释他们在hexa中的计数吗? – user1761911

+0

转换和添加数字所花费的时间要比没有转换的时间短,并且在字符串中添加以十六进制表示的数字。不要担心所花费的时间。关于你的最后一个问题:显示一些资料,我们会讨论它。 – NilsB

+0

@ user1761911您不必担心计算机必须将其转换为二进制文件 - 它已经是二进制文件了!十六进制给我们人类一个简单的方式来可视化半字节和字节。校验和数学是一系列增加,AND和NOT,它们是流行芯片的基本原生指令。 –

0

我想这可能听起来像一个愚蠢的答案,但这是我可以给你的问题写的最好方式。

十六进制的加法运算与十进制运算完全相同,只是16位而不是10位。所以实际上,你要问的是如何做一般的加法(包括十进制)。在十进制中,9 + 1 = 10.十六进制中,F + 1 = 10.显然,相同的加法规则适用于。

+0

好吧,我需要这个,因为即时通讯计数IPv4校验和(检查链接:http://en.wikipedia.org/wiki/IPv4_header_checksum)如果我得到一个数字超过15像24,那么我将使用什么提醒? – user1761911

+0

@ user1761911这听起来像是一个完全不同的问题。所以你应该更新它,并且解释你想要做什么,以及你是否需要手工在纸上做或者为它写代码。 –

1

请参阅http://www.youtube.com/watch?v=UGK8VyV1gLE其中描述的过程非常好。

在HEX(16进制)计数类似,只是,你才开始背着余十进制计数(基数为10)当你算上过去F.

所以从评论你的榜样,它就像计数十进制没有余数:

15 
24 
--- 
39 

一个简单的真HEX除了是:

11 
    F 
--- 
20 

1 + F = 10 = 1余数+ 1 = 20

15超过48也很简单:

15 
48 
--- 
5D 

8 + 5 = d没有余数,1 + 4 = 5没有余