首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

HDU 1196 Lowest Bit:最低置 1 位值

     編輯:C++ 入門

題目

給正整數 A (≤100),輸出其二進制最低位 1 所代表的值。例:26 (11010) → 2;88 (1011000) → 8。

位運算技巧

A & -A 直接得到最低位 1 的值(利用二進制補碼特性)。或循環右移計數。

代碼

int main() {
    int a;
    while (scanf("%d", &a) && a) {
        printf("%d\n", a & -a);
    }
    return 0;
}

原理

-A = ~A + 1,只有最低位 1 及其右側 0 會在 A 和 -A 中同時為 1,與運算保留該位。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved