C++中x&(x-1)是什麼意思(京東筆試)
京東有一道筆試題問下面程式的返回值是什麼
#include "stdafx.h"
#include<iostream>
using namespace std;
int func(int x)
{
int count = 0;
while (x)
{
count++;
x = x&(x - 1);
}
return count;
}
int main()
{
cout << func(2015) << endl;
return 0;
}
我們知道&代表與運算,把x和x-1換算成二進位制,然後逐位運算,在兩個運算元中都有的0或1照抄下來,就是與運算的結果。
更為特殊一點,x&(x-1)就是把x的二進位制-1,或者說把x的二進位制最後一個1變成0。
- 因為可以把x寫成(A)1(B)形式,B代表N個0,比如(10)1(00)、()1(00)、(1100)1()……
- 然後把x-1寫成(A)0(C)形式,C代表N個1,比如(10)0(11)、()0(11)、(1100)0()……
- 這樣x&(x-1)就是(A)0(B),即把x的二進位制最後一個1變成0
所以實際上,上面那段程式是一個計算x的二進位制中1的位數的過程。因為每一次把1變成0的過程count都++了。
------------------------------------
func(2015)=10
- 2015 =(11111011111)2
func(9999)=8
- 9999 =(10011100001111)2
相關文章
- C++中::是什麼意思C++
- ->在c++中是什麼意思C++
- c++中 -> 是什麼意思,如何使用C++
- C++是什麼意思,為什麼叫C++?C++
- c++ 原始碼中&&變數是什麼意思呢?C++原始碼變數
- mysql中是什麼意思?MySql
- js 中~~是什麼意思?JS
- mysql中的“=”是什麼意思MySql
- C++ 這個語句中[&]是什麼意思C++
- [C++] cin, cout, clog, cerr中的c是什麼意思C++
- c++ 中&表達的所有的意思分別是什麼C++
- JQuery中$(document)是什麼意思有什麼作用jQuery
- python中return是什麼意思?Python
- python中mat是什麼意思?Python
- python中global是什麼意思?Python
- javascript中window.$是什麼意思JavaScript
- ITIL是什麼意思?ITIL是什麼?
- Linux中gpgcheck是什麼意思?作用是什麼?LinuxGC
- web安全滲透測試是什麼意思?有什麼作用?Web
- 域名解析中“TTL”是什麼意思?
- TypeScript 中的字面量是什麼意思TypeScript
- Linux中建立group是什麼意思?Linux
- C#中的 int?是什麼意思C#
- HTML是什麼意思?HTML
- Fastboot是什麼意思?ASTboot
- Python中的rad是什麼意思?Python
- oracle 表中的rowid是什麼意思Oracle
- OpenCV中的CV_EXPORT是什麼意思OpenCVExport
- 請教:Jive中的moderate是什麼意思?
- git push -u 中的u是什麼意思Git
- 什麼是API介面,具體是什麼意思?API
- python 是什麼意思Python
- jquery庫是什麼意思jQuery
- JavaScript Token是什麼意思JavaScript
- 加簽是什麼意思?
- 網路安全中弱口令是什麼意思?有什麼危害?
- 網路安全中蜜罐是什麼意思?有什麼特點?
- Linux中opt是什麼意思?其主要作用是什麼?Linux