C# Toán tử dịch chuyển trái theo bit (<<)

C Toan Tu Dich Chuyen Trai Theo Bit



Trong lập trình C#, chúng ta có thể sử dụng toán tử Bitwise để thực hiện các thao tác ở cấp độ bit. Việc tính toán mức bit được thực hiện trong CPU khi chúng ta thực hiện các phép toán số học như cộng, trừ, nhân hoặc chia. Chúng ta cũng có thể thực hiện các thao tác Bitwise trong lập trình C# và quá trình này rất đơn giản. Toán tử Bitwise thực hiện thao tác trên giá trị đã cho. Số lượng bit cần dịch chuyển cũng được chỉ định. Có sáu toán tử Bitwise trong ngôn ngữ C#, hai trong số đó là toán tử dịch chuyển.

Chủ đề thảo luận của chúng ta là về các toán tử thay đổi. Toán tử dịch chuyển trái Bitwise (<<) sẽ được giải thích chi tiết. Toán tử dịch chuyển, như tên cho thấy, dịch chuyển bit từ vị trí đã chỉ định sang trái hoặc sang phải. Giá trị được di chuyển sang trái theo số bit đã chỉ định trong khi sử dụng toán tử dịch chuyển trái theo từng bit (<<). Toán tử dịch trái chỉ nhận đầu vào int (số nguyên), uint (số nguyên không dấu), long (số nguyên dài) và ulong (số nguyên dài không dấu). Khi toán hạng bên trái thuộc kiểu khác, nó được chuyển sang kiểu số nguyên. Loại dữ liệu của giá trị kết quả duy trì giới hạn 32 bit; đầu ra không thể lớn hơn thế. Toán tử bitwise làm cho mã hiệu quả và nhanh hơn. Hơn nữa, họ cung cấp độ chính xác và độ chính xác cao hơn.

Cú pháp:

Toán hạng_1 << Toán hạng_2







“Toán hạng_1” đầu tiên là giá trị được dịch chuyển từ bên trái sang số lần dịch chuyển mà “Toán hạng_2” chứa. Ký hiệu << sang trái sẽ dịch chuyển “Toán hạng_1”.



Ví dụ 1:

Toán tử dịch chuyển trái Bitwise (<<) được áp dụng cho các giá trị số nguyên trong chương trình này.



sử dụng Hệ thống;

chương trình lớp_1
{
khoảng trống tĩnh Chính ( ) {
giá trị int_0 = 3. 4 ;
giá trị int_1 = 65 ;
int độ phân giải = Giá trị_0 << Giá trị_1;
Console.Write ( 'Ca bên trái là  ' ) ;
Console.Write ( độ phân giải ) ;
}
}

Câu lệnh đầu tiên chứa phần khai báo và khởi tạo của hai biến kiểu số nguyên. Biến đầu tiên là “Value_0” và biến thứ hai là “Value_1”. Các giá trị được lưu trữ trong chúng là “34” và “65”. Chúng ta dịch trái giá trị 34 bằng cách sử dụng toán tử dịch trái (<<). Sau đó, ta khai báo một biến khác có kiểu dữ liệu là số nguyên để lưu kết quả. Ở đây, chúng tôi sử dụng toán tử dịch trái (<<) là Giá trị_0 << Giá trị_1. Toán tử left này dịch chuyển giá trị bên trái của toán hạng bên trái bằng giá trị đã cho trong toán hạng thứ hai. “res” lưu trữ đầu ra của toán tử thay đổi. Sau đó, chúng tôi gọi phương thức Console.Write() để in văn bản “Dịch chuyển trái là” và giá trị kết quả được lưu trữ trong “res” trên thiết bị đầu cuối.





Ví dụ 2:

Hãy sử dụng toán tử dịch chuyển trái trên các giá trị số nguyên không dấu và xem cách chúng tạo ra đầu ra.



sử dụng Hệ thống;

chương trình lớp_2
{
khoảng trống tĩnh chính ( ) {
uint Val_0 = 4435 ;
int  Val_1 = 64 ;
uẩn khúc kết quả = Val_0 << Val_1;
Console.Write ( 'Ca bên trái là' ) ;
Console.Write ( kết quả ) ;
}
}

Ở đây, chúng ta áp dụng toán tử dịch trái trên giá trị kiểu số nguyên không dấu. Một điều bạn phải quan tâm là toán hạng thứ hai phải là một giá trị kiểu số nguyên vì trình biên dịch chỉ lấy một giá trị số nguyên để dịch chuyển.

Sau khi gọi hàm static void Main(), chúng ta khai báo hai biến – một biến là giá trị nguyên không dấu “Val_0” và biến còn lại là giá trị nguyên “Val_1”. Sau đó, chúng tôi xác định một biến số nguyên không dấu khác là “kết quả” để giữ giá trị kết quả sau khi dịch trái số nguyên không dấu. Ta không thể lưu kết quả vào biến kiểu số nguyên vì sau khi dịch trái kết quả là giá trị không dấu. Câu lệnh “Val_0 << Val_1” dịch chuyển sang trái toán hạng bên trái là một giá trị số nguyên không dấu. Nó tạo ra một giá trị số nguyên không dấu. Cuối cùng, hiển thị kết quả trên màn hình đầu ra với dòng chữ “The left shift is” sử dụng phương thức Console.Write():

Ví dụ 3:

Trong trường hợp này, chúng ta sẽ nói về các phương pháp khác nhau để sử dụng toán tử dịch chuyển trái Bitwise (<<) trên các giá trị số nguyên dài.

sử dụng Hệ thống;

chương trình lớp_3
{
khoảng trống tĩnh Chính ( ) {
số dài_0 = Bốn năm ;
số dài_1 = 5 ;

Console.Write ( 'Dịch trái của long là' ) ;
Console.WriteLine ( số_0 << 3 ) ;
Console.Write ( 'Dịch trái của long là' ) ;
Console.Write ( số_0 << Chuyển đổi.ToInt16 ( số 1 ) ) ;
}
}

Việc khởi tạo hai biến kiểu số nguyên dài, “số_0” và “số_1”, được thực hiện trong câu lệnh đầu tiên. Gọi hàm Console.Write() để biểu thị thông báo “Dịch chuyển trái của long is” và kết quả trên thiết bị đầu cuối. Ở đây, chúng tôi áp dụng toán tử dịch trái (<<) theo cách mà chúng tôi đặt toán hạng đầu tiên làm biến đầu tiên và toán hạng thứ hai làm giá trị nguyên. Trình biên dịch dịch chuyển toán hạng đầu tiên là “số_0” sang 3 và hiển thị kết quả. Trong câu lệnh tiếp theo, hãy in một thông báo khác trên màn hình bằng cách sử dụng phương thức Console.Write(). Ở đây, chúng tôi sử dụng biến đầu tiên, “số_0”, làm toán hạng thứ nhất và biến thứ hai, “số_1”, làm toán hạng thứ hai. Toán hạng thứ hai phải là một giá trị kiểu số nguyên. Chúng tôi đánh máy biến thứ hai “số_1” thành kiểu số nguyên bằng cách sử dụng hàm Convert.ToInt16(). Sau đó, hiển thị kết quả trên bàn điều khiển:

Ví dụ 4:

Mã này cho thấy cách chúng ta có thể gán các giá trị cho một số nguyên sau khi thực hiện dịch chuyển trái trên toán tử dài không dấu.

sử dụng Hệ thống;

lớp Chương trình_4
{
khoảng trống tĩnh Chính ( ) {
đầu số_0 = 445 ;

Console.Write ( 'Dịch trái của ulong là ' ) ;
Console.WriteLine ( số_0 << số 8 ) ;
Console.Write ( 'Dịch trái của ulong là ' ) ;
Console.WriteLine ( số_0 << 16 ) ;
Console.Write ( 'Dịch trái của ulong là ' ) ;
Console.WriteLine ( số_0 << 32 ) ;

}
}

Đầu tiên, khai báo một biến kiểu số nguyên dài không dấu là “số_0”. Tiếp theo, hiển thị dòng chữ “The left shift of ulong is” trên terminal bằng cách gọi phương thức Console.Write(). Chúng tôi sẽ tìm thấy sự thay đổi trái của “số_0” bằng một giá trị nguyên là 8 và chúng tôi không cần lưu trữ kết quả ở bất kỳ đâu. Hàm Console.WriteLine() in kết quả trên bàn điều khiển. Lặp lại quá trình này hai lần và thay đổi giá trị của toán hạng thứ hai. Bằng cách này, chúng ta có thể tìm thấy sự dịch chuyển trái của một giá trị kiểu số nguyên không dấu dài. Nhưng nếu chúng ta muốn lưu giá trị kết quả vào một biến, chúng ta nên ghi nhớ rằng kết quả phải cùng kiểu với toán hạng đầu tiên. Sự khác biệt duy nhất giữa Console.Write() và Console.WriteLine() là hàm thứ hai in kết quả và gửi con trỏ tới dòng tiếp theo trong khi hàm đầu tiên chỉ in kết quả và con trỏ nhấp nháy trên cùng một dòng ngay cả sau đó hiển thị đầu ra.

Sự kết luận

Chúng tôi đã khám phá các toán tử Bitwise trong C#, các loại và chức năng của chúng. Toán tử dịch trái (<<) được áp dụng để dịch số hoặc giá trị theo số bit xác định sang trái. Các toán tử Bitwise cải thiện hiệu quả của mã và nó không gây gánh nặng cho hệ thống vì chúng là các toán tử nhẹ. CPU (đơn vị xử lý máy tính) của chúng tôi hoạt động ở cấp độ Bitwise bất cứ khi nào chúng tôi thực hiện bất kỳ phép toán số học nào. Tóm lại, các toán tử Bitwise rất quan trọng trong lập trình và C# hỗ trợ tất cả các toán tử Bitwise trong đó toán tử dịch chuyển trái (<<) là một trong số đó.