Lo más fácil es como lo estás haciendo ahora, no creo sea viable andar borrando columnas e insertando nuevas, es más lioso
Código Delphi
[-]
procedure Multiplica(gr:TStringGrid);
var i:integer;
begin
for i:= gr.cols -1 downto 1 do
gr[i,0] := gr[i-1];
gr[0,0] := '0';
end;
procedure Divide(gr:TStringGrid);
var i:integer;
begin
for i:= 0 to gr.Cols -2 do
gr[i,0] := gr[i+1];
gr[gr.cols -1,0] := '0';
end;
Creo que el stringgrid tiene la propiedad "Cols" o "ColsCount" no recuerdo bien (no lo uso mucho).
He supuesto que el bit de menos peso está en la columna cero. Si lo tienes al revés, solo intercambia el nombre de los procedimientos, el que multiplica en realidad dividiría y al revés.
Saludos