Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 5 của 5
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Try this, for example:


    Mã:
    public class BitwiseOperatorsDemo {     public BitwiseOperatorsDemo() {        int x = 0xFAEF; //1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1        int y = 0xF8E9; //1 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1        int z;        System.out.println("x & y : " + (x & y));        System.out.println("x | y : " + (x | y));        System.out.println("x ^ y : " + (x ^ y));        System.out.println("~x : " + (~x));        System.out.println("x << y : " + (x << y));        System.out.println("x >> y : " + (x >> y));        System.out.println("x >>> y : " + (x >>> y));        //There is no unsigned left shift operator    }    public static void main(String args[]) {        new BitwiseOperatorsDemo();    }}
    Hope this help

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Oh, no . It's not like i thought it would be.
    i try ur code with netbean IDE and it show me the result is :

    Mã nguồn PHP:
    x >> y : 125x >>> y : 125  
    ......
    operator>>> is the same as operator>> , is'nt it ?????????

  4. #4
    Ngày tham gia
    Sep 2015
    Đang ở
    Số 60 Thái Hà, Đống Đa, Hà Nội
    Bài viết
    0
    Mạn phép giải thích = tiếng việt do viết tiếng Anh sợ anh em cười chê. [IMG]images/smilies/18.gif[/IMG]
    Thực ra vấn đề về các toán tử >>> và >> ít được mang ra so sánh do rất ít khi được sử dụng tới, ngay cả mình cũng chưa ứng dụng trong bài tập Java nào cả.
    Một vài điểm cần lưu ý là toán tử Bitwise >>> ko tồn tại trong C++ nên một số bạn từ C++ chuyển sang Java sẽ thấy thắc mắc, một điểm khác là chỉ có >>> chứ ko có <<<.

    Về định nghĩa thì chúng được ghi thế này:

    >>: (Signed right shift) Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand.

    >>>Unsigned right shift) Shift right zero fill operator. The left operands value is moved right by the number of bits specified by the right operand and shifted values are filled up with zeros.

    Các bạn chú ý phần text mình tô đậm có lẽ cũng hiểu được sự khác biệt giữa chúng thế nào.

    Để minh họa rõ ràng hơn, các bạn có thể coi figure này:



    Một ví dụ đơn giản:

    a = 0011 1100 (60 trong hệ thập phân)

    b = 0000 1101 (13 trong thập phân)

    A >> 2 cho ra 15 theo hệ nhị phân là 1111
    A >>> 2 cũng cho ra 15 và giá trị nhị phân là 0000 1111

    Đây là lí do khiến 2 kết quả bằng nhau, bạn cũng chú ý trong ví dụ mình post trước có dòng chú thích là sau dòng lệnh sử dụng >>>:

    //There is no unsigned left shift operator
    Mã:
    http://www.javabeginner.com/learn-java/java-operators-tutorial
    Túm lại 1 cách dễ hiểu nhất là >> sẽ điền vào bên trái các bit bị mất = với bit dấu của toán hạng đầu tiên (signed), còn >>> sẽ điền vào là 0 (unsigned). [IMG]images/smilies/21.gif[/IMG]

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    tiếng việt nè hj hj hj

    cám ơn yin yang yo
    mình rất hay dùng >> trong C++, học java thấy cái >>> lạ và thú vị nên quan tâm,

    cái tài liệu Java củ chuối của mình nó phân biệt >>> và >> có 4 chữ duy nhất :|,đã thế trong cái operator table có cả <<< nữa ( chắc nó copy paste)


    Mình hiểu rồi, cám ơn YYY
    còn >> là nó lấy bit đầu của biến đó nhân bản ra
    >>> chính là >> trong C/C++

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •