Quay bit trong C

#include<stdio.h>
#include<stdlib.h>

int main ()

{
    unsigned long long int x;
    unsigned n ;

    scanf("%llu%u", &x, &n);
 	
 	printf("x = %u = 0x%08x\n", x,x);
 	printf("x >> %u = %llu = 0x%08x\n", n, x>>>n, x>>>n);
 	printf("x << %u = %llu = 0x%08x\n", n, x<<<n, x<<<n);
 	return 0;
 	}

bài này e sai ở đâu ạ

Bạn lưu ý đăng code lên DNH dưới dạng text, không phải dạng hình. Bạn đăng code theo hướng dẫn dưới đây:

Hơn nữa, các topic của bạn phải có category và tag. Đối với các topic về code C, bạn đặt category #programming và tag C.

2 Likes

dạ e cảm ơn . để em đăng lại ạ

Bạn chỉ cần sửa vào post đầu tiên là được.

2 Likes

Sao e chỉ thấy chỗ sửa tiêu đề mà ko sửa đc nội dung vậy ạ

Bạn thử click vào nút 3 chấm

rồi click vào nút cái bút

2 Likes

lỗi này là sao ạ

Bây giờ bạn chỉ cần post code lên DNH đã.

dạ e xin phép đăng lại bài :disappointed_relieved:

Bạn cứ reply code của bạn lên đây.

dạ anh check giúp em với ạ

Trong C không có toán tử >>><<<. Bạn sửa thành >><<.

thế đề hỏi quay phải quay trái thì mình làm giống dịch phải dịch trái à anh
tại e tưởng nó khác nhau

Ở đây mình góp ý với bạn là không có toán tử >>> và toán tử <<<. Còn quay bit như thế nào thì bạn thử lý giải bạn muốn làm gì xem.

dạ để e nghĩ thêm… em cũng chưa có hướng

Gợi ý cho bạn: Giả sử x = 26.

  • n = 1 -> x mới = ?
  • n = 2 -> x mới = ?
  • n = 3 -> x mới = ?
  • n = 4 -> x mới = ?
  • n = 5 -> x mới = ?
3 Likes

Những bit dã bị dịch ra ngoài thì sẽ cho nó quay về đầu hoặc cuối. Cũng dùng các toán tử bit như &, |, >><< để thực hiện thôi.
Giả sử 8 bit:

11001010
>>> 3
= 01011001
= 010 (3 bit bị đẩy ra ngoài) + 11001 (các bit được dịch phải).
4 Likes

nó cũng tương tự phép dịch bit đúng ko ạ

1 Like

em nghĩ là sẽ dùng phép dịch chẳng hạn như là 1001 quay phải 3 sẽ là 0011
em sẽ làm lần lượt là 1001>>3 =0001 sau đó or với 1001<1=0010 sẽ ra dc 0011 nhưng mà ở bài kia e làm phép quay phải là (x>>n)|(x<<(31-n)) thì sai ở đâu mà k ra thế ạ

31-n liệu đúng chưa?
Như bạn ví dụ, với 4 bit thì rõ là dịch phải 3 và dịch trái 1 => tổng là 4 = tổng số bit.
Với 32 bit thì bạn lại dùng số 31-n thì có vẻ không hợp lý nhỉ.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?