zoukankan      html  css  js  c++  java
  • 位运算初学

          逻辑运算与逻辑位移

          位运算说穿了,就是直接对整数在内存中的二进制位进行操作。在计算机中的位运算符有如下这么几种:(&按位与)   (|按位或)  (^按位异或)   (~按位取反) ,优先级我们不谈。每个位运算实际的效果:

          假设 1  为真,这其实和数学里一样的

          与运算:0 & 0 = 0, 0 & 1 = 0, 1 & 0 = 0, 1 & 1 = 1       同为真则表现为真,其余均为假

          或运算:0 | 0 = 0, 0 | 1 = 1, 1 | 0 = 1, 1 | 1 = 1     同为假则表现为假,其余均为真

          异或: 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0   2个值不同,则为真,相同则为假

          取反:真 , 取反 , 为假  

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

          移位运算用来将整型或字符型数据作为二进位信息串作整体移动。我们可以把移位运算分为2类,A:逻辑移位  B:算术移位

          逻辑左移位或者右移位都是移动后,空出的位置补 0

        (假设位模式是使用的二进制补码方式存储的带符号的整数)

          算术左移位丢弃符号位,接收新的位作为符号位,如果新的符号位与以前相同,则移位成功,否则发生溢出(上溢下溢)

          算术右移位保留符号位,丢弃最右边的位

       位模式:10011001  (-53)         

          进行算术右移位后:110011000 (符号位保留,之前最右边的1丢弃,最右边补0) -52

          位模式:11011001(-39)      

          进行算术左移位后:10110010(符号位被以前的第二位1替换了,最右边补0) -78

          

          逻辑运算和逻辑位移为我们提供了操作位模式的工具。请看下文:

    假设有一个模式在判断过程中需要用此模式的第三位(h g f e d c b a),也就是说我们需要知道这个 c  到底是 0 还是 1.

          操作方法:

                 逻辑右移一次:   0 h g f e d c b

                 逻辑右移第二次: 0 0 h g f e d c

                 AND                 0 0 0 0 0 0 1

                 如果结果是 0 ,那么目标位就是 0; 反之如果结果是 1 ,则目标位是 1

          平时的开发位模式运算用的比较少~~~ CC++底层中用的比较多,节省资源,提升"效率"~

          笔者手打本文,各方资料请参考:http://blog.sina.com.cn/s/blog_60e96a410100mjd2.html    &&  《计算机科学导论》

  • 相关阅读:
    UVA12125 March of the Penguins (最大流+拆点)
    UVA 1317 Concert Hall Scheduling(最小费用最大流)
    UVA10249 The Grand Dinner(最大流)
    UVA1349 Optimal Bus Route Design(KM最佳完美匹配)
    UVA1212 Duopoly(最大流最小割)
    UVA1395 Slim Span(kruskal)
    UVA1045 The Great Wall Game(二分图最佳匹配)
    UVA12168 Cat vs. Dog( 二分图最大独立集)
    hdu3488Tour(KM最佳完美匹配)
    UVA1345 Jamie's Contact Groups(最大流+二分)
  • 原文地址:https://www.cnblogs.com/legendtao/p/5073215.html
Copyright © 2011-2022 走看看