初赛复习——位运算

(1).分类

符号 含义
&
|
^ 异或
~ 取反
<< 左移
>> 右移

(2).详解

((1).&)(与运算)

核心:(1)(1),其余取 (0)

(Example)
(10)(15) 进行 (&) 运算

((10)_{10} = (1010)_2)((15)_{10} = (1111)_2)
(1010 & 1111 = 1010)
((1010)_2 = (10)_{10})
故答案为 (10).

((2).|)(或运算)

核心:有 (1)(1) ,同 (0)(0)

(Example)
(10)(15) 进行 (|) 运算

((10)_{10} = (1010)_2)((15)_{10} = (1111)_2)
(1010 | 1111 = 1111)
((1111)_2 = (15)_{10})
故答案为 (15).

((3).)^ (异或运算)

核心:相同取(0),相异取(1)

(Example)
(10)(15) 进行 ^ 运算

((10)_{10} = (1010)_2)((15)_{10} = (1111)_2)
(1010) ^ (1111 = 0101)
((101)_2 = (5)_{10})
故答案为 (5).

((4).sim)(取反运算)

核心:(0 o1)(1 o0)

(Example)
(10) 进行 (sim) 运算

((10)_{10} = (1010)_2)
(sim1010 = 0101)
((101)_2 = (5)_{10})
故答案为 (5)

((5).<<)(左移运算)

核心:所有二进制位左移,高位丢弃,低位补 (0)

(Example)
(10) 的二进制位左移 (2)
((10)_{10} = (1010)_2)
(1010<<2 = 101000)
((101000)_2 = (40)_{10})
故答案为 (40)

((6).>>)(右移运算)

核心:所有二进制位右移,低位丢弃,正数高位补 (0),负数高位补 (1)

(Example)
(12) 的二进制位右移 (2)
((12)_{10} = (1100)_2)
(1100>>2 = 0011)
((11)_2 = (3)_{10})
故答案为 (3)

注:每左移 (1) 位相当于在十进制下 (*2),每右移1位相当于在十进制下 (/2).

(a>>b = adiv 2^b)
(a<<b = acdot 2^b)

原文地址:https://www.cnblogs.com/-pwl/p/13767123.html