在某些特殊運算中,不想通過邏輯代碼來判斷某個數是負整數還是正整數,首先我們想到的取正還是負最好的方式就是把那數換算成正負1,通過思考發現用簡單的X除以X不通滿足條件,雖然正數除以正數=0,但是當X爲負數或0時就出問題了。
在此我想到了用移位運算,一個簡單的公式: 數字類型>> 數字類型的最大位數-1|1 (帶符號右移再取或)
比如:100,我們要得到1。因爲100是int類型,int類型佔32位(有些是64位,這得跟計算機有關),
100>>31|1,計算結果就是1.
在某些特殊運算中,不想通過邏輯代碼來判斷某個數是負整數還是正整數,首先我們想到的取正還是負最好的方式就是把那數換算成正負1,通過思考發現用簡單的X除以X不通滿足條件,雖然正數除以正數=0,但是當X爲負數或0時就出問題了。
在此我想到了用移位運算,一個簡單的公式: 數字類型>> 數字類型的最大位數-1|1 (帶符號右移再取或)
比如:100,我們要得到1。因爲100是int類型,int類型佔32位(有些是64位,這得跟計算機有關),
100>>31|1,計算結果就是1.
https://blog.csdn.net/u013129300/article/details/129329786