^ & || >> << ~ 基础 (大家改正)

类别:VC语言 点击:0 评论:0 推荐:

a ^ b  a|| b   a & b            a        b

 1         1        0                1         0

 0         1        1                1        1

0          0        0                0        0

1          1        0                0        1

101000001

~101000001

结果 010111110

正数符号位是0,负数符号位是1

左移一位 可以等价 x2

右移一位 可以等价 /2

正数来说,最高位是0,其余各位代表数值本身的二进制数;
      对于负数来说,把该数的绝对值的补码按位取反,然后对整个数+1,取得该数的补码。如-1的补码为11111111,-1的绝对值补码是00000001,按位取反11111110,再加1,11111111


      左移运算符(<<)会左操作数向左迁移,迁移的位数由右操作数决定(左移后,低位补0)a=a<<2,使a的各个二进制位左移2位,右补0,若a=00001111则a<<2=00111100,高位左移后溢出的位舍弃掉了在不产生溢出的情况下,左移一位相当于乘2,用这种方法来实现乘法,要比乘法运算快很多

右移运算符先会采用一种叫符号扩展的措施:如果原值为正数,高位补0;如果原值为负数,则高位补1

本文地址:http://com.8s8s.com/it/it46.htm