c# 實現無符號右移


/// <summary>
        /// 無符號右移, 相當於java里的 value>>>pos
        /// </summary>
        /// <param name="value"></param>
        /// <param name="pos"></param>
        /// <returns></returns>
        public static int RightMove(this int value, int pos)
        {
            //移動 0 位時直接返回原值
            if (pos != 0)  
            {
                // int.MaxValue = 0x7FFFFFFF 整數最大值
                int mask = int.MaxValue;
                //無符號整數最高位不表示正負但操作數還是有符號的,有符號數右移1位,正數時高位補0,負數時高位補1
                value = value >> 1;
                //和整數最大值進行邏輯與運算,運算后的結果為忽略表示正負值的最高位
                value = value & mask;
                //邏輯運算后的值無符號,對無符號的值直接做右移運算,計算剩下的位
                value = value >> pos - 1;     
            }

            return value;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM