Bạn không biết Msb Và Lsb Là Gì? Most Significant Bit (Msb) Là Gì? Các ví dụ cụ thế dưới mấy mà mindovermetal tổng hợp sẽ giúp ích cho bạn trong quá trình tìm hiểu đấy. Đừng bỏ lỡ nhé!
Mục lục nội dung
Phân biệt MSB và LSB
a, msb và lsb (Chữ thường)
msb: most significant bitlsb: least significant bitBit significant, Bit shiftingmsb : most significant bitlsb : least significant bit
Hai khái niệm này được dùng trong phạm vi 1 byte.
msb là cái bít quan trọng nhất ở byte đó. Hiểu đơn giản, byte nào mà mất cái bit này đi(gán bít này bằng 0) thì giá trị của byte đó bị thay đổi đáng kể (có khi là đổi trắng thay đen, đổi từ âm sang dương :D)lsb thì ngược lại.msb là cái bít quan trọng nhất ở byte đó. Hiểu đơn thuần, byte nào mà mất cái bit này đi ( gán bít này bằng 0 ) thì giá trị của byte đó bị đổi khác đáng kể ( có khi là đổi trắng thay đen, đổi từ âm sang dương : D ) lsb thì ngược lại .
Ví dụ : Trên hình ta có số 10100101 = 165Mất msb thì số đó thành 00100101 = 37Mất lsb thì số đó thành 10100100 = 164
b, MSB và LSB (Chữ hoa)
MSB: Most Significant ByteLSB: Least Significant ByteMất msb thì số đó thành 00100101 = 37M ất lsb thì số đó thành 10100100 = 164MSB : Most Significant ByteLSB : Least Significant ByteHiểu đơn thuần :MSB là byte quan trọng nhất trong một string hoặc buffer.LSB thì ngược lại.MSB là byte quan trọng nhất trong một string hoặc buffer. LSB thì ngược lại .Hai khái niệm này cũng tương quan đến việc tổ chức triển khai những byte tài liệu trong bộ nhớ ( memory, register .. vv ). Nó cũng tương quan đến khái niệm Endian ( hay Big Endian ) và Endianless ( Litte Endian ) .Ví dụ : Trong code ta có một string :
string<3> = {“A”, “B”, “C”} ;Ba phần tử này được lưu thế nào trong bộ nhớ?
Bộ nhớ thì được đánh địa chỉ từ thấp đến cao. Vậy, thằng A được đánh ở địa chỉ nào, thằng C ở địa chỉ nào? Điều này hoàn toàn phụ thuộc vào hệ thống( MCU platform) là big-endian system hay little endian system.
Hiểu đơn thuần, thằng Big-Endian là thằng “ đuôi to ”, MSB sẽ được xếp ở địa chỉ thấp rồi những byte sau được sếp theo địa chỉ to dần .trái lại Little Endian là thằng “ đuôi nhỏ ”, LSB được xếp ở địa chỉ thấp, những byte tiếp theo được sếp ở địa chỉ to dần .Định nghĩa từ Wikipedia :The terms endian and endianness refer to the convention used to interpret the bytes making up a data word when those bytes are stored incomputer memory
Phân biệt Arithmetic Shift và Logical Shift
Hai khái niệm này đều liên quan đến phép dịch bít và các phép toán liên quan đến bit (bitwise operation).
Câu hỏi đặt ra ở đây là : vị trí mà bit bị dịch đi ấy ( vacant bit position ) thì ta điền số mấy vào vị trị đó, 0 hay là 1?
a, Logical Shift
Ta điền số 0 vào các vị trí bị dịch. Hiểu đơn giản trong trường hợp một byte, nó giống như 1 cái hàng đợi (queue). Một bít đi ra một đầu thì đầu kia lại được chèn thêm một bít giá trị 0 vào.
b, Arithmetic Shift (phép dịch số học)
Giá trị được điền vào phụ thuộc vào dấu của byte đó. msb là bit được sử dụng để đánh dấu âm dương cho số đó. Dấu của số này sẽ ko bị thay đổi sau phép dịch số học.Ví dụ, -2 dịch số học sang trái 1 bít thì thành -4.Phép dịch số học hay được sử dụng để nhân/chia một số nguyên có dấu (signed integer) cho 2.
Ta điền số 0 vào những vị trí bị dịch. Hiểu đơn thuần trong trường hợp một byte, nó giống như 1 cái hàng đợi ( queue ). Một bít đi ra một đầu thì đầu kia lại được chèn thêm một bít giá trị 0 vào. Giá trị được điền vào phụ thuộc vào vào dấu của byte đó. msb là bit được sử dụng để lưu lại âm khí và dương khí cho số đó. Dấu của số này sẽ ko bị biến hóa sau phép dịch số học. Ví dụ
– 2 dịch số học sang trái 1 bít thì thành
– 4. Phép dịch số học hay được sử dụng để nhân / chia 1 số ít nguyên có dấu ( signed integer ) cho 2