c语言位运算试题及解析,C语言面试题分类->位运算

1.不用临时变量交换两个整数。

a = a ^ b;

b = a ^ b;

a = a ^ b;

2.实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如9的二进制是1001,则输出2。

int check_count_fun( int number)

{

while(number != 0)

{

number = (number - 1) & number; //与本身减1作与运算,所得数将本身最右侧1变为0。

count++;

}

return count;

}

int main()

{

int count = check_count_fun(3);

printf("include 1 number is %d\n", count);

}

错误代码如下:有符号数会造成死循环,负数移位最高位补1,保证负数。

int NumberOf1(int n)

{

int count = 0;

while(n){

if(n & 1){

count++;

}

n = n >> 1;

}

return count;

}

3.

判断一个数是否为 2 的 k 次方.

n & ( n - 1 ) 如果结果为 0, 是; 反之, 不是.

n & ( n - 1 ) 就是去掉最左边一个 1.

4.二进制的反转,可用于大小端的转换:

如,将一个64位整数转化为网络字节序?

#define HTON64(x)  ((x>>56&0xff)|(x>>40&0xff00)|\

(x>>24&0xff0000)|(x>>8&0xff000000))  |\

(x<<8&0xff00000000)|(x<<24&0xff0000000000)  |\

(x<<40&0xff000000000000)|(x<<56&0xff00000000000000)

C语言回顾-函数和位运算

1.函数的概述 功能独立的代码块 C语言由若干函数组成 1)从定义分,库函数和用户定义函数两种 2)从返回值分,有返回值函数和无返回值函数 3)从参数分,无参函数和有参函数 2.形参和实参 1)形参定 ...

C语言学习笔记之位运算求余

我们都知道,求一个数被另一个数整除的余数,可以用求余运算符”%“,但是,如果不允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注意:该方法只对除数是2的N次方幂时才有效. ...

Python语言中的按位运算

(转)位操作是程序设计中对位模式或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加 ...

c语言小技巧:C语言学习笔记之位运算求余

我们都知道,求一个数被另一个数整除的余数,可以用求余运算符”%“,但是,如果不 允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注 意:该方法只对除数是2的N次方幂时才有效 ...

C语言面试题分类->;指针

有关指针的经典面试题 C语言为何如此长寿并实用?C++为什么有那么多精彩?指针可以说是C/C++中的灵魂所在,虽然早期中pascal也有指针,但是和C/C++比起来不是一个级别的.今天为大家深入浅出的 ...

C语言面试题分类->;字符串处理

1.strlen:计算字符串长度(不包含'\0') 实现想法:遍历字符串,直到'\0'结束 #include #include #incl ...

C语言面试题分类->;回调

本文主要讲解如果实现回调,特别是在封装接口的时候,回调显得特别重要,我们首先假设有两个程序员在写代码,A程序员写底层驱动接口,B程序员写上层应用程序,然而此时底层驱动接口A有一个数据d需要传输给B,此 ...

C语言面试题分类->;链表

链表的创建,清空,插入,删除 typedef int (* __compfunc)(const void *, const void *); //Traverse list. Fast macro t ...

C语言面试题分类->;排序算法

1.选择排序. 每次将最小的数,与剩余数做比较.找到更小的,做交换. 时间复杂度:O(n²) 空间复杂度:O(1) 优缺点:耗时但内存空间使用小. void selectSort(int *p,int ...

随机推荐

23.mysql集群(master-master)

参考: http://blog.csdn.net/mr__fang/article/details/8692480 http://www.2cto.com/database/201201/116756 ...

kaggle&; titanic代码

这两天报名参加了阿里天池的’公交线路客流预测‘赛,就顺便先把以前看的kaggle的titanic的训练赛代码在熟悉下数据的一些处理.题目根据titanic乘客的信息来预测乘客的生还情况.给了titan ...

饮水思源——python中常用基础类源码解析

1.bool类 2.int类 3.long类 4.float类 5.str类 6.list类 7.tuple类 8.dict类 9.collections类 Counter类:为hashable对象计 ...

PHP程序员如何突破成长瓶颈

PHP因为简单而使用,但不能因为它的简单而限制我们成长!文章给PHP工程师突破成长瓶颈提了一些建议,希望PHPer能够突破自己,有更好的发展. AD: 作为Web开发中应用最广泛的语言之一,PHP有着 ...

java学习基础

Q: What if the static modifier is removed from the signature of the main method? A: Program compiles ...

week 与 strong区别 精辟的解释

转:http://stackoverflow.com/questions/9262535/explanation-of-strong-and-weak-storage-in-ios5 觉得讲的很容易理 ...

JavaScript设计模式Item 1—多态

多态的实际含义是:同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果.换句话说,给不同的对象发送同一个消息的时候,这些对象会根据这个消息分别给出不同的反馈. 从字面上来理解多态不太容易, ...

【Delphi】基于状态机的串口通信

通信协议 串行通信接口(如RS232.RS485等)作为计算机与单片机交互数据的主要接口,广泛用于各类仪器仪表.工业监测及自动控制领域中. 通信协议是需要通信的双方所达成的一种约定,它对包括数据格式. ...

poj2492 A Bug's Life【并查集】

Background  Professor Hopper is researching the sexual behavior of a rare species of bugs. He assume ...

update from select

CREATE TABLE dualx( x_id ) NOT NULL , x_con ) ) CREATE TABLE dualy( y_id ) NOT NULL , y_con ) ) ','x ...

你可能感兴趣的:(c语言位运算试题及解析)