按位運算的運用實例

  按位運算有按位與(&),按位或(|)和按位異或(^)。

  按位運算都是先將變量轉變爲二進制,然後按相應規則進行運算。按位與,同爲1才爲1;按位或,同爲0才爲0;按位異或,不相同即爲1。如果覺得難記,不妨這樣想,0爲flase,1爲true,所以按位與,只有當都爲true時才爲true;而按位或,只有當都爲flase時才爲flase。

 下面給出幾個有關按位運算的題目,在題目中學運用。

一.求一個數的二進制中有多少個1?

//求一個數的二進制中有多少個1
int a(int x)
{
	int count = 0;
	while(x)
	{
		count ++;
		x = x & (x - 1);
	}
	return count;
}

二.求384的二進制,使用按位運算求

//求384的二進制,使用按位運算求
void b(int x)
{
	for(int t = 512;t>0;t=t/2)
	{
		if((x&t) != 0)
			cout<<1;
		else
			cout<<0;
	}
	cout<

三.檢驗一個數是否爲2的N次方

//檢驗一個數是否爲2的N次方
void c(int x)
{
	if(!(x&(x-1)))
		cout<<"true"<

四.不使用除法符號求兩個數的平均值

//不使用除法符號求兩個數的平均值
int d(int x, int y)
{
	return (x&y) + ((x^y) >> 1);
}

五.不使用第三個變量交換a和b(a,b均爲int)

//不使用第三個變量交換a和b(a,b均爲int)
void e(int &x,int &y)
{
	x = x ^ y;
	y = x ^ y;
	x = x ^ y;
}

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