位运算与两值互换的几种方法

位运算与两值互换的几种方法

目录

一、位运算

&按位与 |按位或 ^按位异或 ~按位取反
<<按位左位移 >>按位右位移 >>>按位右位移(无符号)

eg:

3&5=~6 =

算法:
1.将3和5转换成二进制表示形式
2.竖着按照对应的位置进行&|^计算
3.将计算后的二进制结果转化为十进制

将二进制每三个合并为一个——-》八进制

将二进制每四个合并为一个——–》十六进制

知识补充
   原码 反码 补码 二进制表示数字
                  6                          |                    -6
原码:00000000 00000000 00000000 00000110     |    10000000 00000000 00000000 00000110
反码:00000000 00000000 00000000 00000110     |    11111111 11111111 11111111 11111001 符号不动其余取反
补码:00000000 00000000 00000000 00000110     |    11111111 11111111 11111111 11111010 反码后加1
计算机中不管是整数还是负数 储存的形式都是以补码形式来储存
注意 反码是一种表示形式 取反是一个计算过程(每一个位置都取反)

  6<<2 = 24
00000000 00000000 00000000 00000110
000000 00000000 00000000 0000011000

  6>>1=3
00000000 00000000 00000000 00000110
000000000 00000000 00000000 0000011

  -6>>>1=3
11111111 11111111 11111111 11111010
?11111111 11111111 11111111 1111101   //问号处填什么,下面给出答案

说明:
>>保留11
>>>不保留全填0

二、两值互换的几种方法

a与b值互换的三种方法

1.新变量 第三方

   int c;
    c=a;
    a=b;
    b=c;

2.求和

  a=a+b;
  b=a-b;
  a=a-b;

3.异或

  a=a^b  // eg: a=1;b=2 a^b----> 001 ---->011=3
              // 010
  b=a^b
  a=a^b;
    原文作者:花生大帝
    原文地址: https://blog.csdn.net/qq1026432050/article/details/88088951
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞