Thông báo

Collapse
No announcement yet.

Xin giúp về đảo bit :(

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Xin giúp về đảo bit :(

    Dự định của mình trình bày thì rất dài nhưng khó khăn gặp phải xin tóm tắt thế này:
    mình có một biến(1byte) x mang một giá trị nào đấy ví dụ 00000000 bây giờ mình muốn x=y; với giá trị y là 00010000.(đảo bit tại bit thứ 4 trong byte)
    Vì có rất nhiều biến cần đảo bit tại một bit xác định của một byte nên không thể làm thủ công x=00010000;
    Bạn nào tốt giúp mình code này với
    Đảo một bit xác định trong một byte
    À quên code C cho keil (code ASM thì mình không biết) bạn nào không thích viết code thì có thể nêu hướng làm mình tự tìm hiểu cũng được

  • #2
    Nguyên văn bởi LeeShin456 Xem bài viết
    Dự định của mình trình bày thì rất dài nhưng khó khăn gặp phải xin tóm tắt thế này:
    mình có một biến(1byte) x mang một giá trị nào đấy ví dụ 00000000 bây giờ mình muốn x=y; với giá trị y là 00010000.(đảo bit tại bit thứ 4 trong byte)
    Vì có rất nhiều biến cần đảo bit tại một bit xác định của một byte nên không thể làm thủ công x=00010000;
    Bạn nào tốt giúp mình code này với
    Đảo một bit xác định trong một byte
    À quên code C cho keil (code ASM thì mình không biết) bạn nào không thích viết code thì có thể nêu hướng làm mình tự tìm hiểu cũng được
    Code:
    XOR    A   B
     0     0   0 
     0     1   1 
     1     0   1 
     1     1   0
    x = 0000.0000
    xor:0001.0000
    =>y=0001.0000
    xor tiếp với: 0001.0000 => 0000.0000
    nói cách khác: y=x^0x10
    Tóm lại: muốn bit nào đảo thì xor với 1, còn bit nào để nguyên thì xor với 0
    Chúc thành công!

    Comment


    • #3
      Nguyên văn bởi nhanh0112 Xem bài viết
      Code:
      XOR    A   B
       0     0   0 
       0     1   1 
       1     0   1 
       1     1   0
      x = 0000.0000
      xor:0001.0000
      =>y=0001.0000
      xor tiếp với: 0001.0000 => 0000.0000
      nói cách khác: y=x^0x10
      Tóm lại: muốn bit nào đảo thì xor với 1, còn bit nào để nguyên thì xor với 0
      Chúc thành công!
      Hi Leeshine456, nhanh0112
      Việc đảo bit mà dùng OR là không thật hợp lý, người ta dùng phép AND với bit "0" để gán bit tương ứng (bất chấp nó đang mang giá trị bao nhiêu) về giá trị "0". Còn người ta dùng phép OR với bit "1" để gán bit tương ứng về giá trị "1" (bất chấp nó đang là bao nhiêu).
      Vậy bạn muốn đảo bit nào, thì cần xác định giá trị "1" của bit đó (thập phân hoặc HEX), sau đó xem giá trị nó đang mang là "1" hay "0" mà chúng ta thực hiện phép AND hay OR ở trên
      Ví dụ, ta cần đảo X=0101 , đảo bit 3, tức là thành Y=0001.
      + tmp = X and 0100
      + nếu tmp>0 thì Y = X and 1011
      + còn lại, nếu tmp = 0 thì Y = X or 0100

      Xong rồi đấy bạn ạ, chạy trên giấy là ngon, nếu cần đảo bit tự động từ 0 đến bit 7, bạn chịu khó đầu tư thêm chút time nhé, chúc vui
      Last edited by thanh_chuoi; 19-04-2010, 01:39.

      Comment


      • #4
        Nguyên văn bởi LeeShin456 Xem bài viết
        Dự định của mình trình bày thì rất dài nhưng khó khăn gặp phải xin tóm tắt thế này:
        mình có một biến(1byte) x mang một giá trị nào đấy ví dụ 00000000 bây giờ mình muốn x=y; với giá trị y là 00010000.(đảo bit tại bit thứ 4 trong byte)
        Vì có rất nhiều biến cần đảo bit tại một bit xác định của một byte nên không thể làm thủ công x=00010000;
        Bạn nào tốt giúp mình code này với
        Đảo một bit xác định trong một byte
        À quên code C cho keil (code ASM thì mình không biết) bạn nào không thích viết code thì có thể nêu hướng làm mình tự tìm hiểu cũng được
        Nhân tiện đang rảnh, mình giúp luôn LeeShin456 nhé
        Bạn khai báo 1 mảng 8 phần tử {1,2,4,8,16,32,64,128} --> ứng với 8 bít mình muốn đổi từ bit 0 - bit 7
        Viết 1 chương trình con Invert (val, bit_position)
        Val chính là giá trị X trong ví dụ trên của mình
        So sánh X với giá trị trong mảng có bit cần đổi ở vị trí bit_position
        Rồi làm như mình đã nói ở trên
        .....

        Xong, OK?

        Comment


        • #5
          Cảm ơn các bạn nhé
          Mình cũng tự tìm ra được cách giống với nhanh0112
          y= x^16;( mình nêu ra cho các bạn khác cùng xem thui
          nếu muốn đảo bit thứ 4. Với các bit khác thì làm tương tự!
          Trong lúc học mình không để ý đếm xor lắm, hôm trước bí bách đành ngồi đọc lại từ đầu cái ebook mới phát hiện ra cái này!

          Comment

          Về tác giả

          Collapse

          LeeShin456 Tìm hiểu thêm về LeeShin456

          Bài viết mới nhất

          Collapse

          • mansion123
            Bật mí những điều ít ai biết về thi công gỗ óc chó
            bởi mansion123
            Thi công gỗ óc chó giúp không gian trở nên sang trọng, ấm cúng, gần gũi hơn. Sự kết hợp giữa thẩm mỹ và chất lượng cao của gỗ óc chó chắc chắn sẽ mang lại giá trị lâu dài và làm hài lòng ngay cả những khách hàng khó tính nhất. Vậy đằng
            ...
            hôm nay, 16:08
          • tuyennhan
            Trả lời cho Tiếng Anh cho người Việt
            bởi tuyennhan
            Cái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
            Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .
            hôm nay, 07:44
          • vi van pham
            Trả lời cho Tiếng Anh cho người Việt
            bởi vi van pham
            Cám ơn những lời chúc tốt đẹp của em.

            Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

            Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
            hôm nay, 02:00
          • nhathung1101
            Trả lời cho Tiếng Anh cho người Việt
            bởi nhathung1101
            Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

            Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

            Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
            Hôm qua, 22:18
          • dinhthuong80
            Trả lời cho Tiếng Anh cho người Việt
            bởi dinhthuong80
            Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

            Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
            Hôm qua, 14:51
          • dinhthuong80
            Trả lời cho Tiếng Anh cho người Việt
            bởi dinhthuong80
            Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

            Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
            Hôm qua, 14:39
          • dinhthuong80
            Trả lời cho Tiếng Anh cho người Việt
            bởi dinhthuong80
            Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

            Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
            Hôm qua, 14:28
          • bqviet
            Trả lời cho Tiếng Anh cho người Việt
            bởi bqviet
            Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
            21-02-2025, 20:26
          • mèomướp
            Trả lời cho Tiếng Anh cho người Việt
            bởi mèomướp
            Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
            21-02-2025, 12:32
          • vi van pham
            Trả lời cho Tiếng Anh cho người Việt
            bởi vi van pham
            Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

            Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
            20-02-2025, 21:31
          Đang tải...
          X