java help plz - ජාවා ‍දන්න කෙනෙක් එනවද

TakurZ

Well-known member
  • May 9, 2008
    8,525
    1,011
    113
    මහනුවර.
    java help plz - ජාවා ‍දන්න කෙනෙක් එනවද

    int a1 = -5; // -5 = 10000000000000000000000000000101


    int b = a1<<1; // 10000000000000000000000000000101 -> 10000000000000000000000000001010
    int c = a1>>1;//10000000000000000000000000000101 -> 10000000000000000000000000000010

    System.out.println (b);
    System.out.println (c);


    meka execute kalama b = -10 enawa pehadilii:D
    namuth c = -3 enne eka apahadilii:rolleyes:

    danna kenek udawwak denawada plz?
     
    Nov 2, 2009
    709
    29
    0
    එහේ.
    machan ube uththare waradi uththare -3 neme -2, -5>>1 shift kalama enne 10000000000000000000000000000010 thama oka decimal kalama uththare -2 ne ban (10000000000000000000000000000010)decimal=[-(2x1+0x1)=-2]
     

    shenoxxx

    Well-known member
  • Sep 23, 2009
    11,838
    873
    113
    අෆ්ෆේ උඹව දැක්ක කල්; දැන්නං උඹෙ කෙසුත් පැහිල මයෙ හිතේ:P:P
    btw thnx 4 d bump
    ලාවට එකක් දෙකක් පැහිලා හේනා ටිකක්වත් වක් කරගන්න ඕනේ:P
    උබ තමා වැඩිය පෙන්ට නැත්තේ.
     
    Nov 2, 2009
    709
    29
    0
    එහේ.
    ah sorry ban -5>>1 eka -3 thamai ube uththare waradi mama kalin -5>>2 karala thiyenne -5>>1 kiyanne 10000000000000000000000000000011 e kiyanne -3
    eka enne mehemai -5 2's complement eka 11111111111111111111111111111011 oke >>1 11111111111111111111111111111101 meken 1k adu kalama 11111111111111111111111111111100 eke binary 10000000000000000000000000000011 e kiyanne -3 i
     

    TakurZ

    Well-known member
  • May 9, 2008
    8,525
    1,011
    113
    මහනුවර.
    ah sorry ban -5>>1 eka -3 thamai ube uththare waradi mama kalin -5>>2 karala thiyenne -5>>1 kiyanne 10000000000000000000000000000011 e kiyanne -3
    eka enne mehemai -5 2's complement eka 11111111111111111111111111111011 oke >>1 11111111111111111111111111111101 meken 1k adu kalama 11111111111111111111111111111100 eke binary 10000000000000000000000000000011 e kiyanne -3 i

    //int -5
    <<1
    //10000000000000000000000000000101 -> true code
    //11111111111111111111111111111010 -> inverted code
    //11111111111111111111111111110100 <- shifting 1 digit
    //+1 to right most digit -> complement code
    //11111111111111111111111111110101 -> complement code
    //btw true code of this complement code is
    //10000000000000000000000000001010 = -10 so answer is ok :D
    ------------------------------------------------
    //int -5
    >>1
    //10000000000000000000000000000101 -> true code
    //11111111111111111111111111111010 -> inverted code
    //11111111111111111111111111111101 -> shifting 1 digit
    //+1 to right most digit -> complement code
    //11111111111111111111111111111110 -> complement code or machine code
    //btw true code of this complement code is
    //10000000000000000000000000000001 = -1 so answer isn't ok:no::baffled:

    poddak explain karanawada mcn mama meke wena widiya weradiyata therum aranda danne ne:rolleyes:
     

    TakurZ

    Well-known member
  • May 9, 2008
    8,525
    1,011
    113
    මහනුවර.
    ලාවට එකක් දෙකක් පැහිලා හේනා ටිකක්වත් වක් කරගන්න ඕනේ:P
    උබ තමා වැඩිය පෙන්ට නැත්තේ.
    පහුගිය දොහේ ඩිංගක් ඉතර බිසී උනා බං:P
     
    Nov 2, 2009
    709
    29
    0
    එහේ.
    //11111111111111111111111111111101 -> shifting 1 digit meka thiyenne 2's complement wala thiyenne eka decimal karanna issaralama meke 2's complement eka ain karala 1's complenent karanna meken ekak adu karanna ona etapasse enne 11111111111111111111111111111100 ne dan meka thiyenne 1's complement wala dan 1's complement binary karanna 1 thiyena than 0 karala 0 ewa 1 karanna ona dan binary code eka 10000000000000000000000000000011 ne me kiyanne -3 (1x2+1x1=3)
     
    • Like
    Reactions: TakurZ

    TakurZ

    Well-known member
  • May 9, 2008
    8,525
    1,011
    113
    මහනුවර.
    //11111111111111111111111111111101 -> shifting 1 digit meka thiyenne 2's complement wala thiyenne eka decimal karanna issaralama meke 2's complement eka ain karala 1's complenent karanna meken ekak adu karanna ona etapasse enne 11111111111111111111111111111100 ne dan meka thiyenne 1's complement wala dan 1's complement binary karanna 1 thiyena than 0 karala 0 ewa 1 karanna ona dan binary code eka 10000000000000000000000000000011 ne me kiyanne -3 (1x2+1x1=3)
    ස්තූතියි මචං, දැන්නං යන්තං තේරුනා.. යන්තං කිව්වට හොඳටම :D මචං ඒත් unsigned shift >>> එකේදි -1 සිද්ධිය වලංගු නෑ නේද?:baffled:
     
    Last edited:

    c.palihakkara

    Member
    Jul 22, 2010
    70
    6
    0
    Matara
    you confused with how to represent minus numbers (singed integers) in JVM

    -1 is represent by 11111111111111111111111111111111
    1 is represent by 00000000000000000000000000000001

    so -5 is represent by 11111111111111111111111111111011

    and shift Operations are
    >> shift bits right with sign extension
    >>= shift bits right with sign extension and assign
    << shift bits left
    <<= shift bits left and assign
    >>> unsigned bit shift right
    >>>= unsigned bit shift right and assign

    so simply this is gonna happens
    a = -5 11111111111111111111111111111011
    b = -10 11111111111111111111111111110110 after shift one bit left
    c = -3 11111111111111111111111111111101 after shift one bit right with sign extension


    You can run this program to see it

    Code:
    public class test {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int a = -5; // a = -5    11111111111111111111111111111011
            System.out.print ("a = "+a+"    ");
            System.out.println (Integer.toBinaryString(a));
            
            int b = a<<1; // b = -10   11111111111111111111111111111011 -> 11111111111111111111111111110110 
            System.out.print("b = "+b+"   ");
            System.out.print (Integer.toBinaryString(b));
            System.out.println("     after shift one bit left");
            
            int c = a>>1;//c = -3   11111111111111111111111111111011 -> 11111111111111111111111111111101
            
            System.out.print ("c = "+c+"    ");
            System.out.print (Integer.toBinaryString(c));
            System.out.println("     after shift one bit right with sign extension");
            
        }
    
    }
     

    TakurZ

    Well-known member
  • May 9, 2008
    8,525
    1,011
    113
    මහනුවර.
    you confused with how to represent minus numbers (singed integers) in JVM

    -1 is represent by 11111111111111111111111111111111
    1 is represent by 00000000000000000000000000000001

    so -5 is represent by 11111111111111111111111111111011

    and shift Operations are
    >> shift bits right with sign extension
    >>= shift bits right with sign extension and assign
    << shift bits left
    <<= shift bits left and assign
    >>> unsigned bit shift right
    >>>= unsigned bit shift right and assign

    so simply this is gonna happens
    a = -5 11111111111111111111111111111011
    b = -10 11111111111111111111111111110110 after shift one bit left
    c = -3 11111111111111111111111111111101 after shift one bit right with sign extension


    You can run this program to see it

    Code:
    public class test {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int a = -5; // a = -5    11111111111111111111111111111011
            System.out.print ("a = "+a+"    ");
            System.out.println (Integer.toBinaryString(a));
            
            int b = a<<1; // b = -10   11111111111111111111111111111011 -> 11111111111111111111111111110110 
            System.out.print("b = "+b+"   ");
            System.out.print (Integer.toBinaryString(b));
            System.out.println("     after shift one bit left");
            
            int c = a>>1;//c = -3   11111111111111111111111111111011 -> 11111111111111111111111111111101
            
            System.out.print ("c = "+c+"    ");
            System.out.print (Integer.toBinaryString(c));
            System.out.println("     after shift one bit right with sign extension");
            
        }
    
    }
    ya mcn that's true I'm struggling here with minus representations:(
    මචං මම PM එකක් දැම්මා පොඩ්ඩක් බලනවද
     
    Last edited: