C语言常用基础位操作
1、使用下面的代码将最右边的1改变为0,假如没有1则结果为0(e.g.,01011000=>01010000):
x & (x-1)
此代码可以用来判断一个无符号的整数是否为2的幂,假如x & (x-1)==1,则x为2的幂,否则x不为2的幂
2、相似地,下面的代码可以用来判断一个无符号的整数是否具备2n-1的格式(包括n=0、1)
x & (x+1)
3、下面的代码将隔离最右边的1,假如右边没有1则结果返回0 (e.g., 01011000 =>00001000):
x & (-x)
4、下面的代码将隔离最右边的0,假如右边没有0则结果返回0 (e.g., 10100111 =>00001000):
~x & (x+1)
5、下面的代码都可以用来产生一个掩码,用来保留尾部的0,假如x=0则返回全1字节 (e.g., 01011000 =>00000111):
~x & (x-1) 或 ~(x | -x) 或 (x & -x)-1
6、下面的代码用来产生一个掩码,用来保留最右边的1与尾部所有的0,假如x=0则返回全1字节(e.g., 01011000 =>00001111):
x ^ (x-1)
7、下面的代码用来将最右边的1右边的0全部改为1,假如x=0则返回全1字节(e.g., 01011000 = >01011111):
x | (x-1)
8、下面的代码将最右边的1临近的1取反 (e.g., 01011000 =>01000000):
((x | (x-1))+1) & x
C语言常用基础位操作的更多相关文章
- R语言常用基础知识
seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)), length.out = NULL, along.with = NULL, ...
- R语言常用基础知识(入门)
data.frame 动态确定列名称 var <- "mpg" #Doesn't work mtcars$var #These both work, but note tha ...
- C语言零基础入门难发愁,那就快来看看这篇基础整理资料吧
C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成.格式.以及良好的书写风格,使小伙伴对c语言有个初步认识. 例1:计算两个整数之和的c程序: #include main() { in ...
- iOS开发系列--C语言之基础知识
概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift ...
- LINUX下C语言编程基础
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...
- 关于JS脚本语言的基础语法
JS脚本语言的基础语法:输出语法 alert("警告!"); confirm("确定吗?"); prompt("请输入密码");为弱 ...
- 2.4JAVA基础复习——JAVA语言的基础组成数组
JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...
- 2.3JAVA基础复习——JAVA语言的基础组成函数
JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...
- 2.2JAVA基础复习——JAVA语言的基础组成运算符和语句
JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...
随机推荐
- 本文将详细介绍oracle 10g OEM常规错误
本文将详细介绍oracle 10g OEM常规错误-------Unknown host specified解决方法,需要了解的朋友可以参考下 详细出处参考:http://www.jb51.net/a ...
- Vue-router路由判断页面未登录跳转到登录页面
router.beforeEach((to, from, next) => { if (to.matched.some(record => record.meta.requireAuth) ...
- localstorage和sessionstorage上手使用记录
通过阅读各路大神对web存储locastorage和sessionstorage的用法解析,自己试用了一下,在此留个备忘. 在项目中,如果用到很多次storage,要存储很多数据,就要把它封装成函数了 ...
- 教你ABBYY FineReader 12添加图像的技巧
ABBYY FineReader 12是一款OCR图片文字识别软件,而且强大的它现在还可使用快速扫描窗口中的快速打开.扫描并保存为图像或任务自动化任务,在没有进行预处理和OCR的ABBYY FineR ...
- Visual Studio 2012中使用GitHub
前言 一直以来都想使用Git来管理自己平时积累的小代码,就是除了工作之外的代码了.有时候自己搞个小代码,在公司写了,就要通过U盘或者网盘等等 一系列工具进行Copy,然后回家才能继续在原来的基础上作业 ...
- QT基础:QT 定时器学习
定时器在编程中经常要用到,有必要学习一下,记记笔记! Qt中定时器的使用有两种方法,一种是使用QObject类提供的定时器,还有一种就是使用QTimer类. 1.QObject中的定时器的使用,需要用 ...
- symfony 事务提交
1. 添加数据 新建一个对象,给对象赋值 $em = $this->getDoctrine()->getManager(); //添加事物 $em->getConnection()- ...
- SQL备份一张表的数据
使用如下语句 SELECT * into table_bak FROM table 可把表table中的数据备份到 table_bak ,而且无需重新建table_bak .会自 ...
- 我的notepad++
我觉得,做开发的一定要有一个简单,但功能强大的文本编辑器.我比较喜欢notepad++,而且一直使用.准备通过这篇文章分享一下我的notepad++配置. 希望广大notepad++用户,如果有好的配 ...
- ios开发之--理解NSStringDrawingOptions每个选项的用法与意义
typedef NS_OPTIONS(NSInteger, NSStringDrawingOptions) { NSStringDrawingUsesLineFragmentOrigin = < ...