Viết hàm để dịch bit vòng quanh một số bước. Thuật toán này rèn luyện toán tử shift right >>, shift left <<, bit wise AND &, bit wise OR, most significant bit và least significant bit 

Chú ý: các bạn hoàn toàn dễ dàng porting code demo sang bất kỳ ngôn ngữ lập trình nào khi đã hiểu bản chất. Có thể sang một số video sau, tôi sẽ demo code bằng Java hoặc C++ hoặc JavaScript để các bạn thấy ở mức độ giải thuật, hầu hết các ngôn ngữ để có thể chuyển đổi dễ dàng khi các bạn đã hiểu bản chất vấn đề

const INT_LENGTH = 8;
void main() {
  print("Shift Bit Circular");
  int x = 13;
  print(decimalToBitString(x, true));
  print(decimalToBitString(shiftBitCircular(x, 2),true));  
}

String decimalToBitString(int x, bool paddingZero) {
  String bitString = "";
  if (paddingZero) {
    for (var i = 0; i < INT_LENGTH; i++) {
      bitString = ((x & 1 == 1) ? "1" : "0") + bitString;
      x = x >> 1;
    }
  } else {
    while (x > 0) {
      bitString = ((x & 1 == 1) ? "1" : "0") + bitString;
      x = x >> 1;
    }
  }
  return bitString;
}

int shiftBitCircular(int x, int step) {
  if (step > 0) {
    for (int i = 0; i < step; i++) {
      int lSB = x & 1;
      x = (x >> 1) | (lSB << (INT_LENGTH-1));
    }
    
  } else if (step < 0) {
    step = -step;
    for (int i = 0; i < step; i++) {
      int mSB = x >> (INT_LENGTH-1);
      x = (x << 1) | mSB;
    }
  }
  
  return x;
}