RFC: 1071
Оригинал: Computing the Internet Checksum
Категория: Не определено
Дата публикации:
Авторы: , ,
Перевод: Николай Малых

RFC 1071, Страница 4 из 9

3. Численные примеры

Ниже рассматриваются явные примеры расчета сумм дополнений до 1 на машине с дополнением до 2. Примеры показывают, как одну и ту же сумму можно рассчитать путем сложения байтов, 16-битовых слов с нормальным и измененным порядком байтов, а также 32-битовых слов с 3 вариантами порядка байтов. Все числа задаются в шестнадцатеричном формате.

          Byte-by-byte    "Normal"  Swapped
                            Order    Order

Byte 0/1:    00   01        0001      0100
Byte 2/3:    f2   03        f203      03f2
Byte 4/5:    f4   f5        f4f5      f5f4
Byte 6/7:    f6   f7        f6f7      f7f6
            ---  ---       -----     -----
Sum1:       2dc  1f0       2ddf0     1f2dc

             dc   f0        ddf0      f2dc
Carrys:       1    2           2         1
             --   --        ----      ----
Sum2:        dd   f2        ddf2      f2dd

Final Swap:  dd   f2        ddf2      ddf2


Byte 0/1/2/3:  0001f203     010003f2       03f20100
Byte 4/5/6/7:  f4f5f6f7     f5f4f7f6       f7f6f5f4
               --------     --------       --------
Sum1:         0f4f7e8fa    0f6f4fbe8      0fbe8f6f4

Carries:              0            0              0

Top half:          f4f7         f6f4           fbe8
Bottom half:       e8fa         fbe8           f6f4
                  -----        -----          -----
Sum2:             1ddf1        1f2dc          1f2dc

                   ddf1         f2dc           f2dc
Carrys:               1            1              1
                   ----         ----           ----
Sum3:              ddf2         f2dd           f2dd

Final Swap:        ddf2         ddf2           ddf2

В заключение приводится пример суммирования в виде двух групп, из которых вторая начинается на нечетной границе.

           Byte-by-byte    Normal
                            Order

Byte 0/1:    00   01        0001
Byte 2/ :    f2  (00)       f200
            ---  ---       -----
Sum1:        f2   01        f201

Byte 4/5:    03   f4        03f4
Byte 6/7:    f5   f6        f5f6
Byte 8/:     f7  (00)       f700
            ---  ---       -----
Sum2:                      1f0ea

Sum2:                       f0ea
Carry:                         1
                           -----
Sum3:                       f0eb

Sum1:                       f201
Sum3 byte swapped:          ebf0
                           -----
Sum4:                      1ddf1

Sum4:                       ddf1
Carry:                         1
                           -----
Sum5:                       ddf2
2007 - 2017 © Русские переводы RFC, IETF, ISOC.