迴圈左移時,用從左邊移出的位填充字的右端,而迴圈右移時,用從右邊移出的位填充字的左側。這種情況在系統程式中時有使用,在一些控制程式中用得也不少。 設有資料說明: a=01111011,迴圈左移2位 正確結果: 11101101 過程: b=a>>(8-2) 用來得到正常左移丟失的位和迴圈移位後其正確位置 b=00000001; a=a<<2;左移 a=11101100 a=a|b; a=11101101 如果不是用中間變數 a=(a>>(8-2))|(a<<2) 總長度N(8 16 32) 迴圈左移n: (a>>(N-n))|(a>>n) 迴圈右移n: (a<<(N-n))|(a>>n) C語言的位運算功能是其區別於其他大多數高階程式設計語言的特色之一,用它可以方便實現一些特殊功能,靈活掌握是用C程式編寫系統程式的基礎。
擴充套件資料: C語言高效程式設計技巧: 一:以空間換時間 計算機程式中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程式的效率問題 二:數學方法解決問題 數學是計算機之母,沒有數學的依據和基礎,就沒有計算機發展,所以在編寫程式的時候,採用一些數學方法會對程式的執行效率有數量級的提高。 三:使用位操作 實現高效的C語言編寫的第三招----使用位操作,減少除法和取模的運算。 在計算機程式中,資料的位是可以操作的最小資料單位,理論上可以用“位運算”來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做資料變換使用,但是,靈活的位操作可以有效提高程式執行的效率。
迴圈左移時,用從左邊移出的位填充字的右端,而迴圈右移時,用從右邊移出的位填充字的左側。這種情況在系統程式中時有使用,在一些控制程式中用得也不少。 設有資料說明: a=01111011,迴圈左移2位 正確結果: 11101101 過程: b=a>>(8-2) 用來得到正常左移丟失的位和迴圈移位後其正確位置 b=00000001; a=a<<2;左移 a=11101100 a=a|b; a=11101101 如果不是用中間變數 a=(a>>(8-2))|(a<<2) 總長度N(8 16 32) 迴圈左移n: (a>>(N-n))|(a>>n) 迴圈右移n: (a<<(N-n))|(a>>n) C語言的位運算功能是其區別於其他大多數高階程式設計語言的特色之一,用它可以方便實現一些特殊功能,靈活掌握是用C程式編寫系統程式的基礎。
擴充套件資料: C語言高效程式設計技巧: 一:以空間換時間 計算機程式中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程式的效率問題 二:數學方法解決問題 數學是計算機之母,沒有數學的依據和基礎,就沒有計算機發展,所以在編寫程式的時候,採用一些數學方法會對程式的執行效率有數量級的提高。 三:使用位操作 實現高效的C語言編寫的第三招----使用位操作,減少除法和取模的運算。 在計算機程式中,資料的位是可以操作的最小資料單位,理論上可以用“位運算”來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做資料變換使用,但是,靈活的位操作可以有效提高程式執行的效率。