位运算——综述

来源:互联网 发布:强力删除软件下载 编辑:程序博客网 时间:2024/05/22 03:16

位运算的学习资料

位运算中关于如何处理带符号整数类型的符号位并没有明确的规定,具体的要视平台而定,不过无符号类型就不存在这种问题了。

位运算的话,个人比较推荐matrix 67 写的关于位运算的博客,一共有四篇,名称如下:

位运算简介及实用技巧(一):基础篇

位运算简介及实用技巧(二):进阶篇(1)

位运算简介及实用技巧(三):进阶篇(2)

位运算简介及实用技巧(四):实战篇

(建议直接输入” 博客名+matrix67 “进行查找)

这四篇博文的程序部分大部分使用pascal,不过都比较直白、简单,对学习其他语言的人来说,问题也不大(实在看不懂,只看解析也行)。

在这里也推荐一下matrix67的博客,个人觉得这是我看过的最好的博客了,原因有两点:

①matrix67是大牛,他的博客自然也是深度与广度兼备。

②mareix67的博客直白易懂,很多人确实很大牛,对于某个算法理解的很深入,但往往一写出来,能意思清楚、连贯、直白、易懂的就真没多少了,毕竟搞IT的很多都是理工科出身,语文实在不咋地。(ps:matrix67是文科里的理科生)


在看了一堆资料后,在这里简要的把位运算的一些用处罗列一下,也好有个整体的概念:

1、位运算是直接的底层操作,合理使用位运算可以大大加快程序的运行速度。

      比如:a=a*2    改成  a<<=1,a=a/2  改成  a>>=1;

2、位运算与集合。具体表现在用二进制的数位来代表某一元素,用一个数字来代表一个集合。

     比如:有1到3这三个数,用右起第i个二进制位来代表数 i ,那么只有数字1的集合为:001==1,含有数字1,、2的集合为   011==3,空集为000==0;

3、状态压缩,比如:状压dp、hash;这个就不举例了,具体的可以自己去百度学习状压dp。


补充一下:

原码:二进制中第一个数表示是正数还是负数 ,剩下的数表示所要表示的数的绝对值.

   比如,0010=2,  1010=-2

反码:因为原码在计算机中不方便,引入了反码,反码就是负数在二进制中除了第一个数表示符号外,其他的数都依次取反,

   比如127=01111111,而-127=10000000

补码:虽然反码方便但是在计算中会错(正数和负数的计算),因为0000=0,1111=-0=0;有两个数表示同一个数,所以在计算中会少一,补码就是在负数的反码上加上一。

   比如-5=11111010(反码),补码为-5=11111011

      




 



0 0
原创粉丝点击