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语言面试题分类->位运算的更多相关文章
- 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<stdio.h> #include<stdlib.h> #incl ...
- C语言中的重要位运算
1. 常用的等式 :-n = ~(n-1) = ~n + 1. 2. 获取整数n的人进制形式中的最后1个,也就是只保留最后一个1,其余的全部置位0,如1000 0011 ---> 0000 0 ...
- C语言面试题分类->回调
本文主要讲解如果实现回调,特别是在封装接口的时候,回调显得特别重要,我们首先假设有两个程序员在写代码,A程序员写底层驱动接口,B程序员写上层应用程序,然而此时底层驱动接口A有一个数据d需要传输给B,此 ...
- C语言面试题分类->链表
链表的创建,清空,插入,删除 typedef int (* __compfunc)(const void *, const void *); //Traverse list. Fast macro t ...
随机推荐
- C++自定义String字符串类,支持子串搜索
C++自定义String字符串类 实现了各种基本操作,包括重载+号实现String的拼接 findSubStr函数,也就是寻找目标串在String中的位置,用到了KMP字符串搜索算法. #includ ...
- CSS之使用display:inline-block来布局
css之display:inline-block布局 1.解释一下display的几个常用的属性值,inline , block, inline-block inline(行内元素): 使元素变成行内 ...
- UE4渲染笔记
Lightmass 实时渲染光影效果对性能有很大影响,可利用lightmass预先生成光影贴图,然后在游戏中使用. 将场景光照结果完全烘焙到模型贴图上,从而完完全全的假冒现实光照效果. 文档上是 li ...
- 安装tftp
#!/bin/bash # tftp install # 20180711 # 仅测试过操作系统 ubuntu 16.04 download_url='http://img.fe.okjiaoyu.c ...
- Bmob后端云学习(未完)
Bmob后端云学习 BaaS(后端即服务:Backend as a Service)公司为移动应用开发者提供整合云后端的边界服务. 这种服务的一个代表就是Bmob后端云,BAT和亚马逊 ,都有这类产品 ...
- 20175204 张湲祯 2018-2019-2《Java程序设计》 第一周学习总结
20175204 张湲祯 2018-2019-2<Java程序设计>第一周学习总结 教材学习内容总结 -第一章Java入门要点: -Java的地位:具有面向对象,与平台无关,安全稳定和多线 ...
- nginx: 应用访问默认采用https
主要配置如下: #静态文件的访问 server { listen 443 ssl; server_name static.jksfrz.com; ssl_certificate d:/app/ngin ...
- Pygal之世界地图绘制from pygal.i18n import COUNTRIES 报错的解决办法
在<Python编程:从入门到实践>书中的一个项目用到pygal.i18n获取国别码, 问题描述: 在学习<python编程:从入门到精通>的pygal绘制世界地图时,遇到了这 ...
- 金蝶k/3 K3密码对照破解源码
金蝶k/3 K3密码对照破解源码 通过密码对照表进行密码破解 以下是源码: VERSION 5.00 Object = "{0ECD9B60-23AA-11D0-B351-00A0C9055 ...
- 第四次java实验
java实验 实验一: 要求 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第 ...