位运算符以及源码补码反码

Posted 风泊月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位运算符以及源码补码反码相关的知识,希望对你有一定的参考价值。

位运算符

位操作是程序设计中对位模式按位或二进制数的一元和二元操作。

创建一个表格

位运算符意义
<<左移
>>右移
>>>无符号右移 最高位无论正数负数都补0
&俩数都为1结果为1
|有一个为1结果是1
^相同为0不同为1

原码、补码、反码

原码:是最简单的机器数表示法。用最高位表示符号位,‘1’表示负号,‘0’表示正号。其他位存放该数的二进制的绝对值。

反码:正数的反码还是等于原码

补码:正数的补码等于他的原码 计算机中的数据以补码的形式存储

正数三码合一 不做谈论
负数的原码 为 符号位+对应数据的绝对值
比如-12: 符号位为1 其余位数是其二进制数的绝对值
        -12:对应的各个码
        
        1000 0000 0000 0000 0000 0000 0000 1100 原码

        1111 1111 1111 1111 1111 1111 1111 0011 反码

        1111 1111 1111 1111 1111 1111 1111 0100 补码  反码+1
-12>>>2
        右移两位 移动的是补码 不够的部分如果是正数 补 0  否则补 1
        1111 1111 1111 1111 1111 1111 1111 1101  
        将补码转为反码    补码-1 操作
        1111 1111 1111 1111 1111 1111 1111 1100
        将反码转为原码
        1000 0000 0000 0000 0000 0000 0000 0011
        结果为-3

-13 >>2 补码-1变为反码 反码变为原码

-13>>2
          
          1000 0000 0000 0000 0000 0000 0000 1101 原码
          
          1111 1111 1111 1111 1111 1111 1111 0010 反码
          
          1111 1111 1111 1111 1111 1111 1111 0011 补码

          1111 1111 1111 1111 1111 1111 1111 1100 补码>>2

          1111 1111 1111 1111 1111 1111 1111 1011 补码 -1 变反码

           1000 0000 0000 0000 0000 0000 0000 0100 反码变为原码
-13>>2 补码的补码是原码
-13>>2

          1000 0000 0000 0000 0000 0000 0000 1101 原码

          1111 1111 1111 1111 1111 1111 1111 0010 反码

          1111 1111 1111 1111 1111 1111 1111 0011 补码

          1111 1111 1111 1111 1111 1111 1111 1100 补码>>2

          1000 0000 0000 0000 0000 0000 0000 0011  补码取反
          
          1000 0000 0000 0000 0000 0000 0000 0100  反码+1

以上是关于位运算符以及源码补码反码的主要内容,如果未能解决你的问题,请参考以下文章

位运算符以及源码补码反码

源码,反码,补码,位运算

源码,反码以及补码

数值的二进制与位运算

原码反码补码与位运算

位运算学习笔记