Побитовое Умножение - PullRequest
1 голос
/ 25 февраля 2011

просто быстрый вопрос, ваш код добавляет биты к числам, которые больше 2, что является пределом двоичного кода, например, предположим, что n1 = 1111 и n2 то же самое, тогда ваш код покажет результат 1234321, хотя его недопустимое двоичное число, как мы должны сделать результат в двоичном виде? спасибо

Ответы [ 3 ]

0 голосов
/ 25 февраля 2011

В Java вы можете сделать следующее, чтобы получить вывод в двоичном виде

int i1 = 1111;
int i2 = 1111;
int result = i1 * 12;
System.out.println("result in binary " + Integer.toBinaryString(result)); 
0 голосов
/ 25 февраля 2011

Вы неправильно понимаете двоичную математику.1111 не является двоичным, во всяком случае, не 1111, который может быть умножен на 1111 и приводит к 1234321.

двоичный 1111 будет 15 в десятичном видепопробуйте использовать windoes Calc для переключения между декабрем и бином.

[1111 (Dec) = 10001010111 (Bin)
1111 (Bin) = 15 (Dec)
1234321 (Dec) = 100101101010110010001 (Bin)
1234321 (bin) is invlid][1]

В любом случае вам нужно будет пройти через двоичный Math, чтобы понять, как это работает.эту ссылку и посмотрите, как умножение работает

0 голосов
/ 25 февраля 2011

Алгоритм такой же, как и с десятичными числами, как вы учили в школе. Вы несете переполнение. Но на самом деле это не имеет ничего общего с умножением. Это просто дополнение. Например, 1111 x 1111 = 1111 + 11110 + 111100 + 1111000.

...