码迷,mamicode.com
首页 > 其他好文 > 详细

18 位运算

时间:2020-02-21 22:11:16      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:反码   规则   原码   c语言   运算符   mamicode   图片   bsp   code   

1,原码,反码,补码

  ①二进制的最高位是符号位,0代表正数,1表示负数

  ②正数的原码,反码,补码都一样

  ③负数的反码=它的原码符号位不变,其他位取反(1->0  0>1)

  ④负数的补码=它的反码+1

  ⑤计算机运算的时候,都是以补码的方式来运算的

2,位运算符

  技术图片

 

 

 3,C语言位运算规则

  ① 按位与 & :  两位全为1,结果为1,否则为0

  ② 按位或 | :两位有一个为1,结果为1,否则为0

  ③ 按位异或 ^ :两位一个为0,一个为1,结果为1,否则为0

  ④ 按位取反 ~:0  --  1   1-- 0

4,  求 ~2

  步骤:

  ①求出2的补码

  ②将2的补码取反

  ③取反后的补码变为原码

  求解:

    ①2是正数(4个字节),2的补码就是2的原码,所以2的补码是:

      00000000  00000000  00000000  00000010

    ②2的补码取反,得到

      11111111  11111111  11111111  11111101

    ③取反后得到的补码符号位是1,说明是负数,求负数的原码,需要先求出反码(补码-1)

      11111111  11111111  11111111  11111100

      再求出原码(符号位不变,其他位按位取反)

      10000000  00000000  00000000  00000011  =》-3

    ④得 2 按位取反的结果为 -3  

5,求 2& -3

    步骤

    ①求出2的补码

    ②求出-3的补码

    ③将2的补码和3的补码按位与运算

    ④将运算后的补码变成原码

    求解

      ①2是正数,补码等于原码,为,

        00000000  00000000  00000000  00000010

      ②-3是负数,求负数的补码,需要先通过原码求出反码,

        原码:10000000  00000000  00000000  00000011

        反码:11111111  11111111  11111111  11111100

        补码:11111111  11111111  11111111  11111101

      ③两补码按位与运算:

        00000000  00000000  00000000  00000010

        11111111  11111111  11111111  11111101

       =》00000000  00000000  00000000  000000000

       =》0

      ④得到结果为0

6,算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位

   1 >>2    ====   1/2/2=0

   -1 >> 2  === -1

    求解 -1 >>2

    步骤:①求出 -1 的补码

       ②将-1的补码右移2位

          ③ 将右移后的补码转为原码

    求解:

      ① -1 是负数,先得到原码,

        10000000  00000000  00000000 00000001

        再得到反码,

        11111111  11111111  11111111  11111110

        得到补码:

        11111111  11111111  11111111  11111111

      ② 右移2位

        11111111  11111111  11111111  11111111

      ③上面的补码告诉我们这是一个负数,需要先求出反码,

        10000000  00000000  00000000  00000000

         原码:(反码+1)

        10000000  00000000  00000000  00000001 =》 -1

7,算术左移 << : 符号位不变,低位补0

    c=1 << 2   ==== 1*2*2 =4

 

18 位运算

标签:反码   规则   原码   c语言   运算符   mamicode   图片   bsp   code   

原文地址:https://www.cnblogs.com/shanlu0000/p/12343155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!