位运算

一.概念

     现代计算机中所有的数据都有以二进制的形式存储在设备中:即 0、1 两种状态。

     计算机对二进制数据进行的运算(+、-、*、/)都是叫位运算,即将符号位共同参与运算的运算。

                           ↓

       int变量会在计算机内先转化为二进制再进行相加。

     因此,合理的运用位运算更能显著提高代码在机器上的执行效率。

 

二.位运算概览

  • 与运算         
  • 或运算
  • 异或运算

         (以上详见之前的博文:听课与看视频的总结

  • 左移(<<)
  • 右移(>>)
  • 取反(~)

      1.左移与右移

      (1)左移(<<)

                各二进位全部左移若干位,高位丢弃,低位补0

               例如:设a = 10101100

                          则a<<4 = 11000000

       (2)右移(>>)

                将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

        2.取反

           ~0=1  ~1=0

            例如:~00001111 = 11110000

 

三.不同长度的数据进行位运算

     如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算

      注意:如果一个long型数据与一个int型数据进行"与运算",右端对齐后,左边不足的位按以下三种情况补足

             (1)如果整型数据为正数,左边补16个0

             (2)如果整型数据为负数,左边补16个1

             (3)如果整形数据为无符号数,左边也补16个0

 


 

*如有问题欢迎指出!

2021/10/16        

 

posted @ 2021-10-16 20:14  鸢凛  阅读(125)  评论(0编辑  收藏  举报