Operand đầu tiên là một số lượng được chuyển, và operand thứ hai xác định num¬ber vị trí bit mà operand đầu tiên là để được chuyển. Sự chỉ đạo của hoạt động thay đổi được điều khiển bởi các nhà điều hành được sử dụng. Các nhà điều hành << thay đổi giá trị của op¬erand trái bên trái; dư thừa bit chuyển ra bên trái được bỏ đi, và 0-bit được chuyển trong từ bên phải. Các nhà điều hành >> thay đổi giá trị của operand trái sang phải; dư thừa bit chuyển ra bên phải được loại bỏ. Các bit chuyển trong từ bên trái để >> phụ thuộc vào loại trái operand chuyển đổi: nếu đó là chưa được ký (hoặc đăng nhập và không âm), sau đó 0-bit được chuyển từ phía bên trái; nhưng nếu nó là chữ ký và tiêu cực, sau đó lựa chọn của thực 0-bit hoặc bản sao của các bit tận cùng bên trái của operand trái được chuyển trong từ bên trái. Do đó, việc áp dụng các nhà điều hành thay đổi» là không cầm tay khi operand trái là một giá trị tiêu cực, ký và operand phải là nonzero.Giá trị kết quả của các nhà khai thác sự thay đổi là không xác định nếu giá trị operand phải là tiêu cực, do đó, chỉ định một khoảng cách thay đổi tiêu cực không (nhất thiết) gây ra << để chuyển sang bên phải hoặc >> để chuyển sang bên trái. Giá trị kết quả là cũng không xác định nếu giá trị của operand đúng là lớn hơn hoặc bằng chiều rộng (trong bit) giá trị của op¬erand trái đã được chuyển đổi. Operand phải có thể 0, trong trường hợp không có sự thay đổi xảy ra và giá trị kết quả giống hệt nhau để giá trị của operand trái đã được chuyển đổi.Ví dụMột có thể khai thác các ưu tiên và associativity của các nhà khai thác để viết biểu thức trực quan dễ chịu nhưng gây nhầm lẫn ngữ nghĩa:b << 4 >> 8Nếu b là một giá trị dấu 16-bit, sau đó biểu hiện này chiết xuất giữa 8 bit. Như mọi khi, nó là tốt hơn để sử dụng dấu ngoặc đơn khi không có bất kỳ khả năng của sự nhầm lẫn:(b «4) » 8Ví dụỞ đây là làm thế nào điều thay đổi hoạt động có thể được sử dụng để tính toán ước chung lớn nhất của hai số nguyên bởi các thuật toán nhị phân. Phương pháp này là phức tạp hơn al¬gorithm Euclid, nhưng nó có thể nhanh hơn bởi vì trong một số hiện thực của C hoạt động còn lại là chậm, đặc biệt là cho dấu operands.
đang được dịch, vui lòng đợi..