&(按位与运算)、|(按位或运算)、^(异或运算)

按位与运算符(&)

对俩个数据进行二进制按位与运算。

二进制规则:0&0=0;  0&1=0;   1&0=0;    1&1=1

      双1为1,否则为0.

例:102&255即:01100110&11111111=01100110 十进制为:102

        01100110

        11111111

--------------------

        01100110

负数按补码形式参加按位与运算

按位或运算符(|)

对俩个数据按二进制按位或运算。

二进制规则:0&0=0;  0&1=1;   1&0=1;    1&1=1

      有1为1,否则为0.

例:102&255即:01100110&11111111=11111111 十进制为:255

        01100110

        11111111

--------------------

        11111111

负数按补码形式参加按位与运算

 

异或运算符(^)

对两个数据按二进制位进行“异或”运算。

二进制规则:0^0=0;  0^1=1;  1^0=1;   1^1=0

      相同为0,否则为1

例:102&255即:01100110&11111111=11111111 十进制为:153

        01100110

        11111111

--------------------

        10011001

负数按补码形式参加按位与运算

 

取反运算符(~)

对1个数据按二进制位进行“取反”运算。

二进制规则:~0=1,~1=0

      取相反数

例:102即:01100110=10011001十进制为:153

 

左移运算符(<<)

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

例:40 = 10<< 2将a的二进制位左移2位,右补0

10=00001010左移俩位=00101000=10

注意:左移1位后a = a *2; 

若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。即:a<<n ,若ad的二进制舍弃不包含1,则 a=a*n次方

右移运算符(>>)

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

例:2 = 10>> 2将a的二进制位左移2位,右补0

10=00001010左移俩位=00000010=2

注意:操作数每右移一位,相当于该数除以2

左补0 or 补1得看被移数是正还是负

 

 

补码

正数:原码=反码=补码

[+1] = [0000 0001]原= [0000 0001]反= [0000 0001]补

负数:

原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如:如果是8位二进制:

[+1]原= 0000 0001

[-1]原= 1000 0001

第一位是符号位,因为第一位是符号位,所以8位二进制数的取值范围就是:(即第一位不表示值,只表示正负。)

[1111 1111 , 0111 1111]

[-127 , 127]

负数的反码是在其原码的基础上,符号位不变,其余各个位取反

[-1] = [1000 0001]原= [1111 1110]反

负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(也即在反码的基础上+1)

[-1] = [10000001]原= [11111110]反= [11111111]补

posted @ 2023-02-08 14:20  清华大咖  阅读(464)  评论(0编辑  收藏  举报