Team giảng viên sẽ chia sẻ hầu hết phần bài giảng lý thuyết của lớp luyện thi FE, để các bạn có thể tham khảo tự ôn. Phần bài tập thực hành, thi thử thì các bạn chịu khó tham gia lớp để làm để được chấm, chữa bài nhé.

Cần nhớ

  • Denary / Decimal Number
  • Binary: hệ nhị phân (hệ 2)
  • Octal: hệ bát phân (hệ 8)
  • Hexadecimal: hệ thập lục phân (hệ 16)
  • Bit: 0 và 1
  • Nibble: 4 bit
  • Byte: 8 bit
  • Word: 16 bit
  • Long Word: 32 bit

Denary/Decimal numbers - Hệ thập phân

Khi còn nhỏ, chúng ta lần đầu tiên bắt gặp những con số mà chúng ta sử dụng trong cuộc sống hàng ngày khi lần đầu tiên học đếm. Cụ thể, chúng ta học cách đếm bằng cách sử dụng 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Điều này mang lại cho chúng ta mười ký hiệu khác nhau để biểu thị từng chữ số riêng lẻ. Do đó, đây là một hệ thống số cơ sở 10. Các số trong hệ thống này được gọi là số denary hoặc theo truyền thống hơn là số thập phân.

Khi một số được viết ra, giá trị mà nó đại diện được xác định bởi giá trị vị trí của các chữ số trong số đó. Điều này có thể được minh họa bằng cách xem xét số denary 346 được diễn giải như bảng dưới

346

346=3∗102+4∗101+6∗100346 = 3 * 10^2 + 4 * 10^1 + 6 * 10^0346=3102+4101+6100

Bạn có thể thấy rằng bắt đầu từ đầu bên phải của số (chứa chữ số có nghĩa nhỏ nhất), giá trị vị trí tăng theo lũy thừa của cơ số.

Binary numbers - Hệ nhị phân

Hệ thống số nhị phân là cơ số 2. Mỗi chữ số nhị phân được viết bằng một trong hai ký hiệu 0 và 1. Một chữ số nhị phân được gọi là một bit.

Bit: một chữ số trong hệ thống số nhị phân được viết bằng một trong hai ký hiệu 0 và 1

Như với một số denary, giá trị của một số nhị phân được xác định bởi các giá trị vị trí. Số nhị phân 101110 được thể hiện như sau:
Binary

1∗25+0∗24+1∗23+1∗22+1∗21+0∗201*2^5 + 0*2^4 + 1*2^3+ 1*2^2 + 1*2^1 + 0*2^0125+024+123+122+121+020

Bằng cách cộng các giá trị ở hàng dưới cùng, bạn có thể thấy rằng số nhị phân 101110 có giá trị tương đương với số nhị phân 46.
Bạn phải có khả năng sử dụng hệ thống số nhị phân để hiểu hệ thống máy tính. Điều này là do bên trong các hệ thống máy tính không có nỗ lực nào để biểu diễn riêng lẻ mười chữ số khác nhau. Thay vào đó, tất cả công nghệ máy tính được thiết kế với các thành phần chỉ đại diện hoặc nhận biết hai trạng thái: ‘bật’ và ‘tắt’. Để phù hợp với điều này, tất cả các phần mềm được sử dụng bởi phần cứng sử dụng mã nhị phân bao gồm các bit. Mã nhị phân có thể đại diện cho một số nhị phân nhưng điều này không nhất thiết phải đúng như vậy.
Mã nhị phân thường dựa trên việc sử dụng một hoặc nhiều nhóm tám bit. Một nhóm tám bit được gọi là một byte.

class Main {  
  public static void main(String args[]) {
    int a = 0B101110;
    System.out.println(a);  // in ra 46
  } 
}

Byte: một nhóm tám bit được coi là một đơn vị

Hãy paste đoạn code dưới đây vào replit.com để chạy thử

class Main {
  public static void main(String args[]) {
    byte myNum = 100;
    System.out.println(myNum);
    myNum = 300;
    System.out.println(myNum);
  }
}

Octal numbers - Hệ bát phân

Hệ đếm cơ số 8. Hệ đếm này đã từng phổ biến ở một số máy tính cổ điển UNIVAC 1050, PDP-8, ICL 1900 và IBM mainframe. Nhưng hiện nay thì ít sử dụng hơn trên máy tính hiện đại so với các hệ đếm thập phân, nhị phân và thập lục phân.

1248=1∗82+2∗81+4∗80124_8 = 1 * 8^2 + 2 * 8^1 + 4 * 8^01248=182+281+480

Hexadecimal numbers - Hệ thập lục phân

Đây là các số cơ số 16 trong đó mỗi chữ số thập lục phân được biểu thị bằng một trong các ký hiệu sau: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F . Các ký hiệu từ A đến F đại diện cho các giá trị denary từ 10 đến 15.

Ví dụ số thập lục phân 2A6

0x2A6=2∗162+A∗161+6∗160=2∗256+10∗16+6∗1=6780x2A6 = 2 * 16^2 + A * 16^1 + 6 * 16^0 = 2 * 256 + 10 * 16 + 6 * 1 = 6780x2A6=2162+A161+6160=2256+1016+61=678

Đoạn code này thể hiện số interger theo hệ lục thập phân

public class Main {
  public static void main(String[] args) {
    int one = 0X2A6;  //Hexa decimal literal
    int two = 0xABC;
    System.out.println("Hexadecimal: " + one); // Hexadecimal: 678
    System.out.println("Hexadecimal: " + two); // Hexadecimal: 2748
  }
}

Đoạn code này chuyển đổi chuỗi ký tự mô tả hệ lục thập phân sang số Integer

public class Main {
  public static void main(String[] args) {
    System.out.println(Integer.parseInt("123",16));  
    System.out.println(Integer.parseInt("ABC",16));
  }
}

Nibble - Byte - Word - Long Word

  • Một nibble gồm có 4 bit biểu thị bằng một chữ số thập lục phân.
1∗23+1∗22+1∗21+1∗20=15=F1 * 2^3 + 1 * 2^2 + 1 * 2^1 + 1 * 2^0 = 15 = F123+122+121+120=15=F

Nibble

  • Một byte gồm có 8 bit biểu thị 0-255. Một byte gồm 2 nibble
  • Một word gồm 2 byte tương đương 16 bit
  • Một long word gồm 4 byte tương đương 32 bit

Cấu trúc Binary