使用位運算求正數的相反數

對於負數而言,求相反數就是求其絕對值,上篇博客已經給出了用位運算求絕對值的方法。這篇博客給出用位運算求正數的相反數的方法。我們知道,對於用源碼錶示的數中,如果一個正數和一個負數除符號位不同,其他位均相同的話,那麼他們互爲相反數。從這個規則可知,如果我們將一個正數的符號位取反,那麼將得到這個數用原碼錶示的相反數。同時,我們知道計算機裏面的數是用補碼形式存儲的,而且負數的補碼是原碼除符號位外其餘位取反加1,那麼我們可以通過將一個正數的所有位取反然後加1的方式得到它的相反數。代碼如下所示:

int get_reverse_for_positive_number(int num) {
    return ~num + 1;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章