偶初学编程,对下段代码不太理解,有谁帮我逐行解释一下?
static int GbkHz2244ToYj(int nHzcode)
    {
        int hi = nHzcode >> 8 & 0xff;
        int low = nHzcode & 0xff;
        int t2;
        int t3;
        int t4;
        int t1 = t2 = t3 = t4 = 0;
        int res = 65535;
        if(hi >= 129 && hi <= 160 && low >= 64 && low <= 254)
        {
            t1 = (hi - 129) * 191 + (low - 64) + 1;
            t2 = (t1 * 9 - 1) / 32;
            t3 = ((t1 - 1) * 9 - 1) / 32;
            t4 = (t1 * 9) % 32;
            if(t2 > t3)
                res = (ShengMuYinJie.GBKHZCODETOYJ[t2] >>> 32 - t4 & 0x1ff) + (ShengMuYinJie.GBKHZCODETOYJ[t3] << t4 & 0x1ff);
            else
            if(t2 == t3)
                res = ShengMuYinJie.GBKHZCODETOYJ[t2] >>> 32 - t4 & 0x1ff;
        } else
        if(hi >= 170 && hi <= 254 && low >= 64 && low <= 254)
        {
            t1 = (hi - 170) * 191 + (low - 64) + 1;
            t2 = (t1 * 9 - 1) / 32;
            t3 = ((t1 - 1) * 9 - 1) / 32;
            t4 = (t1 * 9) % 32;
            if(t2 > t3)
                res = (ShengMuYinJie.GBKHZCODETOYJ[t2 + 1719] >>> 32 - t4 & 0x1ff) + (ShengMuYinJie.GBKHZCODETOYJ[t3 + 1719] << t4 & 0x1ff);
            else
            if(t2 == t3)
                res = ShengMuYinJie.GBKHZCODETOYJ[t2 + 1719] >>> 32 - t4 & 0x1ff;
        } else
        if(nHzcode >= 8193 && nHzcode <= 8772)
        {
            t1 = nHzcode - 8192;
            t2 = (t1 * 9 - 1) / 32;
            t3 = ((t1 - 1) * 9 - 1) / 32;
            t4 = (t1 * 9) % 32;
            if(t2 > t3)
                res = (ShengMuYinJie.DYZCODETOYJ[t2] >>> 32 - t4 & 0x1ff) + (ShengMuYinJie.DYZCODETOYJ[t3] << t4 & 0x1ff);
            else
            if(t2 == t3)
                res = ShengMuYinJie.DYZCODETOYJ[t2] >>> 32 - t4 & 0x1ff;
        } else
        {
            res = 65535;
        }
        if(res == 511)
            res = 65535;
        return res;
    }
尤其是位运算,我一点也看不明白.