Skip to content

Instantly share code, notes, and snippets.

@io-developer
Created May 22, 2019 22:37
Show Gist options
  • Save io-developer/a5b001ce952185ec0fbcbe1b64859734 to your computer and use it in GitHub Desktop.
Save io-developer/a5b001ce952185ec0fbcbe1b64859734 to your computer and use it in GitHub Desktop.
dec: 117 x 73
hex: 0x75 x 0x49
пусть в нашем примере максимальный int = 0xFF
тогда разобьем число по разрядам в половину маскимального (чтобы умещались переполнения в старшие разряды)
vecs: [0x07, 0x05] x [0x04, 0x09]
mul:
расширяем в 2 раза результирующий вектор
множим на 0x09 (первый разряд):
[0x00 * 0x09, 0x00 * 0x09, 0x07 * 0x09, 0x05 * 0x09]
0x05 * 0x09 = 0x2D -> 0x02 в перенос и разряд [0x0D]
0x07 * 0x09 + 0x02 перенос = 0x41 -> 0x04 в перенос и разряд [0x01]
0x00 * 0x09 + 0x04 = 0x04
0x00 * 0x09 + 0x00 = 0x00
промежуточный итог 1:
[0x00, 0x04, 0x01, 0x0D]
смещением и множим на 0x04 (второй разраяд):
[0x00 * 0x04, 0x07 * 0x04, 0x05 * 0x04, 0x00 * 0x04]
0x00 * 0x04 = 0x00 -> 0x00, 0x00
0x05 * 0x04 + 0x00 = 0x14 -> 0x01, 0x04
0x07 * 0x04 + 0x01 = 0x1D -> 0x01, 0x0D
0x00 * 0x04 + 0x01 = 0x01 -> 0x00, 0x01
промежуточный итог 2:
[0x01, 0x0D, 0x04, 0x00]
складываем 2 итога с переносами:
[0x00, 0x04, 0x01, 0x0D]
+
[0x01, 0x0D, 0x04, 0x00]
=
[0x02, 0x01, 0x05, 0x0D]
итог:
0x215D
8541
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment