According to The C Programming language by Dennis M. Ritchie , Page 49 Second Paragraph
Right Shifting a signed quantity will fill with sign bits on some machines and with "0-bits" on others.
Suppose int occupies 2 Bytes then -1 will be represented as 11111111 11111111 in 2's complement form
Right Shifting it by 4 bits and fill with sign bits 11111111 11111111 = ffff // %x prints answer in hexadecimal form
Right Shifting it by 4 bits and fill with 0 bits 00001111 11111111 = offf
Both A and B are correct. It depends on machines.