30/09/2018, 17:41
Hỏi về phép dịch phải dịch trái trong c/c++
phần thao tác phép toán bit trong c/c++
e đọc 1 số tài liệu thấy
phép dich trái và phải được nói như sau:
Toán tử dịch trái <<
Khi toán tử dịch trái được thực hiện trên một toán hạng, những bit của toán hạng được dịch về bên trái.
Các bít bị chuyển sang trái bị mất và 0 thay vào phía bên phải của toán hạng.
Toán tử dịch bit phải >>
Trong thao tác dịch bít phải, bít ở bên phải bị dịch chuyển sẽ bị mất và tùy thuộc vào loại của máy tính, số 1 hay số 0 sẽ được thêm vào ở bít ngoài cùng bên trái.
Toán tử dịch chuyển cũng thường được nhắc đến như xoay trái và xoay phải.
ở chỗ toán tử dịch phải tùy thuộc vào loại của máy tính, số 1 hay số 0 sẽ được thêm vào ở bít ngoài cùng bên trái.
nhưng 1 số tài liệu thì luôn mặc định thêm 0 vào
và e muốn hỏi tùy thuộc vào loại của máy tính, số 1 hay số 0 sẽ được thêm vào ở bít ngoài cùng bên trái.
thì tùy thuộc ở đây là như thế nào? và chốt lại thì là thêm 0 hay 1 ạ
Bài liên quan
Bạn đọc tài liệu nào nói thêm 1 vào bên trái ở kết quả của phép toán dịch bit phải vậy, chỉ mình với. Mình đọc thì toàn thấy là thêm 0 vào bên trái thôi.
ebook Eddie’s basic guide to C Programmin
http://www.peoi.org/Courses/Coursesvi/cprog/temp/cprog11t7.html
Ak, mình nghĩ ở đây tác giả có nhầm lần một chút giữa toán tử dịch bít và quay. Bạn xem ở đây nhé, https://en.wikipedia.org/wiki/Bitwise_operation
tùy thuộc máy tính thế nào đc bạn ,phép dịch bit đó tùy thuộc bạn dịch bit của số âm hay dương , mình vd bạn dịch bit sang trái của 1 số âm thì phần thêm vào bên phải sẽ là 1 ,ngược lại nếu dịch số dương thì sẽ là 0
Tùy thuộc vào kiểu dữ liệu
như trong C, nếu kiểu dữ liệu có dấu (int, long,…)
thì nó sẽ theo bit trái cùng.
Còn nếu là kiểu ko dấu (unsigned int, unsigned long,…)
thì nó sẽ là số 0.
Ví dụ:
1 cái sẽ ra 31, còn 1 cái sẽ ra -1;
hai bạn có thể viết 1 bài về Bitwise Operations được không
b thật ra bằng -1 mà.
Thế dịch số học là ntn… bookmark để mai đọc