存档

文章标签 ‘位运算’

二进制思考系列文章(目录)

2012年3月2日 2 条评论

二进制思考(四):位运算经典题目练习

2012年3月2日 没有评论

---

本文主要是基于《The C Programming Language》的位运算题目进行了一个整理,第一道题和第四道题都是该书中的题目,本节在这里给出一些可能的实现。

========目录=======

--二进制1的个数

--前导0的个数

--二进制逆序

--二进制循环移位

--高低位交换

==================

二进制1的个数

计算二进制1的个数,位运算可以有多种方法,本文实现了三种方法,前两种思想基本一样,细节不同,可对比看一下,欢迎讨论,代码如下

阅读全文...

二进制思考(二):位运算简介、技巧

2012年3月1日 没有评论

---

上一篇回顾整理了关于机器码的一些知识,计算机便是使用机器码进行运算的,基于二进制机器码的运算我们称之为位运算,了解位运算的基本知识和一些常用技巧有利于我们深化理解,提高编程效率。看完本文,可以试着做一下《The C Programming Language》第二章的练习题,够嚼一会儿的了,哈哈

========目录=======

--位运算简介

--打印整型二进制 | 获取原码、反码、补码

--位运算技巧

==================

位运算简介

位运算的基本运算符有:and(&), or(|), xor(^), not(~), shl(<<), shr(>>),一般来讲,位运算符通常用于unsigned类型的整数。关于这六种运算符的简介,matrix67总结的很好,这里手抄一遍,部分做了修改和补充,加入了我的理解。

=== 1. and 运算 ===

and 运算通常用于二进制取位操作,例如一个数 and 1 的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制最末位为0表示偶数,最末位为1表示位奇数。

and 运算符通常和一个称为“屏蔽码(mask)”的操作数一起使用,例如上面的1。屏蔽字是指定位置为1的整数值,用来选择一个值的某些位时隐藏其他位。and与屏蔽码一起使用有很多用处,例如

  • 将指定位置0
  • 测试某个位是1还是0

阅读全文...

分类: C/C++ 标签: ,