10101:101
Сначала нужно представить в 8 битном формате (8 знаков) получается
00010101 : 00000101
сдвигаем делитель (00000101) влево пока позиция старшего значения единицы, в нем, не совпала с позицией старшего значения единицы в делимом (00010101). Получается делитель равняется 00010100. И запоминаем количество сдвигов (2).
Нам нужно представить делитель в дополнительном коде(это типо обратное число + 1 вот так: 00010100 прямой код = 11101011 + 1 = 11101100 дополнительный код). Если в начале цифры 1 то это отрицательной число таким образом -делитель = делитель в доп. коде.
Вычитаем из делимого (00010101) делитель (11101100) получается 00000001(частный), с остатком 1 (частный остаток). Вспоминаем количество сдвигов (2) и столько же сдвигаем влево наш частый получается 100 и 1 остаток.
В общем все сложно а результат 10101 : 101 = 100 и 1 в остатке.
А еще точнее 100.00110011
Объяснение:
Вот ссылка там можешь решать подобные задачи и объяснение там лучше моей: http://www.reshinfo.com/delenije_1.php
просто значение Разрядная сетка постав 8 бит
ну остальное сам поймешь
//длинная арифметика
begin
var a := '123456789123456789';//ReadString();
var b := '123456789123456789123';//...
var l := Abs(a.Length - b.Length);
var source := l*'0';
if a.Length > b.Length then
insert(source, b, 1)
else
insert(source, a, 1);
var s := '';
var mem := 0;
for var i:=a.Length downto 1 do
begin
var c := a[i].ToDigit + b[i].ToDigit + mem;
mem := c div 10;
insert((c mod 10).ToString, s, 1)
end;
if (mem > 0) then insert('1', s, 1);
s.Println;
end.