The temporary storage and retrieval of groups of bits is done with multiple flip flops, this is a register

Untitled

wire [3:0]D;
neg [3:0] Q;
always @ (posedge clock)
	Q <=D;

Shift Register

Register that has the ability to shift its contents

Binary multiply/divide by 2 (shift left or shift right)

Binary multiply/divide by 2 (shift left or shift right)

wire reset_m, clock, Dim;
neg [3:0] Q;
always @ (posedge clock)
	if (!reset_m)
		Q <= 0; //all three bits 
	else begin //non blocking assignment
		Q[0] <= Dim;
		Q[1] <= Q[0];
		Q[2] <= Q[1];
		Q[3] <= Q[2];
	end