• 逻辑操作符、位操作符号的忽略点


    研究生要毕业了,最近要开始找工作,随便翻看一下基础知识。

    逻辑操作符和位操作符都是操作符分类中的一种。

    说明两个问题:

    第一:短路逻辑操作符和非短路逻辑操作符的区别

            短路逻辑与(&&)    短路逻辑或(||)   非短路逻辑与(&)  非短路逻辑或(|)

            短路的意思就是,计算左操作数后,如果能决定表达式的值,那就不计算右操作数。

            如: if(1==2&&1==1)  //左操作数为假,表达式就一定为假了,就不计算右操作数了

            非短路的意思就是,左右操作数都要计算完,才计算表达式的值 

             如: if(1==2&1==1)  //先计算左操作数为假,右操作数为真,然后,真假为假

             其实,基本用到的就是短路操作符,相比而言,其效率更高,非短路的我是很少用到的目前

             不过,&和|也可以作为位操作符使用,这个可是经常用到的。

              &:按位与    |:按位或    与:1,1为1,其他为0。或 0,0为0,其他为1。

             别的基础的不说了!

    第二:关于位操作符>>   >>>   <<的问题

             >>:算术右移,左边直接补全符号位       >>>:逻辑右移,左边直接补全0      <<:算术左移,右边直接补全0

             对于算术左移和算术右移,有计算公式:

              a<<b   <=>  a*2的  b%(a类型的bit数)  次方

              a>>b    <=>  a/2的   b%(a类型的bit数)  次方  前提是:|a|>=|b|

              例如:  -1>>1   用上面的公式算的话就是0。其实不是

                        就拿整数的默认类型int来说

                        对于-1      原码:10…………01

                                       反码:11…………10       

                                                            +1       负数的补码是原码取反再+1

                                       补码:11…………11

                         所以说,对于-1的算术右移,其值是不变的,还是-1。因为补全的是符号位1。

                         对于逻辑右移,补全的是0。就变成了

                                       补码:01…………11      正数的原码即补码

                                       原码:01…………11        <=> 2147483647

                      正数和负数在计算机的存储虽说都是二进制,但是,实质是不一样的。

                      正数在计算机上存储的是原码        负数存储的是补码

                      位操作的本质:是对计算机上存储的二进制位进行操作的。

                      如上面的左右移,对于正数,移动的是原码 ,对于负数,移动的是补码。

                      正数的原码就是补码。负数的原码取反再+1才是补码。

                      所以才会有

                                      -1>>1  为-1

                                    -1>>>1 为2147483647

            

  • 相关阅读:
    重温.NET Remoting(四)
    asp.net mvc3的变态错误
    绝对定位与相对低位的应用
    Tsql script for Job
    Entlib5.0之数据查询
    Jquery Mobile dialog的生命周期
    关于委托Lamda表达式等的一个小例子
    网上摘录 数据分组处理
    Oracle 要点摘录
    [原創]另一種思路固定URL及.NET實現
  • 原文地址:https://www.cnblogs.com/felixzh/p/4499935.html
Copyright © 2020-2023  润新知