位运算

位运算

简介:

机器数:数在计算机中的二进制表示形式
1B=8b 最高位存放符号, 正数为0, 负数为1.

	eg:   +5: 0000 0101  = [0000 0101]原 = [0000 0101]反 = [0000 0101]补
	      -5: 1000 0101  = [1000 0101]原 = [1111 1010]反 = [1111 1011]补

真值:带符号位的机器数对应的真正数值,而非机器数的形式值

	eg:   0000 0101真值为: +000 0101=+5
	      1000 0101真值为: -000 0101=-5

机器存储一个具体数字(机器数)的编码方式 :

原码:第一位符号位加上真值的绝对值

	eg:  [-5]原: 1000 0101

反码:数值位取反

	eg:  [-5]反: 1111 1010

补码:反码+1

	eg:  [-5]补: 1111 1011

负数:补码形式参加位运算

  1. 按位与运算符: (& )

    规则: 0&0=0 0&1=0 1&0=0 1&1=1

     eg: 3 & 5 =1:   0000 0011 & 0000 0101 = 0000 0001
    

    作用:

    ①清零:将一个数的二进制形式与一个各位都为0的数进行与运算

     eg: 3 &0 =0:   0000 0011 & 0000 0000 = 0000 0000
    

    ②取指定位:将一个数的二进制形式与一个待取定位为1,其余为0的数进行与运算

     eg:   0000 0011 & 0000 1111 = 0000 0011
    
  2. 按位或运算符:(|)

    规则: 0^0=0 0^1=1 1^0=1 1^1=0

     eg: 3 | 5 =7:   0000 0011 | 0000 0101 = 0000 0111
    

    作用:

    ①位置置1:将一个数的二进制形式与一个待置位置为1,其余为0的数进行或运算

     eg:   0000 0011 | 1111 0000 = 1111 0011
    
  3. 按位异或运算符:(^)

    规则: 0^0=0 0^1=1 1^0=1 1^1=0 (同0异1)

     eg: 3 ^ 5 =7:   0000 0011  ^  0000 0101 = 0000 0110
    

    作用:

    ①特定位翻转::将一个数的二进制形式与一个待特定位置为1,其余为0的数进行异或运算

     eg:  0000 0011 ^ 0000 1100 = 1111 1111
    
  4. 按位取反运算符(~)

    规则: ~1=0 ~0=1 ~x=-(x+1);

     eg:    ~3   =  1000 0100 =  -4   
    

    作用:

    X&~1 :使一个数的最低位为0

     ~1:1111 1111 1111 1110
    
  5. 按位左移运算符(<<):

    将一个运算对象的各二进制位全部向左移动若干位(左边的二进制位丢弃,把右边的二进制位补0)

    eg:  0000 0011   <<   2    =    0000 1100
    
  6. 按位右移运算符(>>):

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

     eg:   0000 1110   >>   1   =  0000 0111
           1000 1110   >>   1   =  1000 0111
    
  7. 不同长度的数据进行位运算:

    系统会将二者按照右端对齐,然后进行位运算:

    1. 整型数据为正数,左边补16个0
    2. 整型数据为负数,左边补16个1
    3. 整型数据为无符号数,左边补16个0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值