题目:3+4>>2^-8 求结果
解答:思路:a=3+4;b=a>>2;c=b^(-8);
3+4=7,7>>2相当于把7扩大2的2次方倍,为28,^是按位异或运算符,把两个数的二进制形式进行比较,相同的得0,不同的得1,
负数用补码进行运算,正数的原码反码补码一样,
8的二进制为00001000,反码为11110111,补码为11111000(反码+1),则-8表示为11111000,28为00011100(补码),异或运算:
00011100
^11111000
———–
11100100(补码)(第一位为1则为负数)
换算成反码(补码减1)为:11100011 ,想知道这个负数的值,要求其原码,(正数负数互为反码),原码为:00011100(28),所以这个最后的值为-28
注:运算时用补码(正数的原码补码相同,直接用),结果即为计算结果,如果补码前面都是1(首位为1),则为负数,想知道它的10进制数字,转为原码后得到它的正数值来推断。
一个关于位运算的小题目,基础差真可怕
最新推荐文章于 2021-11-07 18:47:43 发布