5-1我想知道8143>>0*8 & 0xff =(11001111) =207
改为有符号,值就成了-49?是怎么计算的
改为有符号,值就成了-49?是怎么计算的
2016-08-17
数值是以补码表示的。正数的补码与该数的原码(该数的二进制形式)相同,求负数的补码:是将该数的绝对值形式,然后按位取反再加1,得到该负数的补码,转十进制数,再取该十进制数的相反数,可以得到要求的。
8143 二进制表示为 1111111001111 第一个1表示负号
| 1111111001111 | = 1111111001111 //第一步,取该数的绝对值
~ 1111111001111 = 0000000110000 //第二步,按位取反得 0000000110000
0000000110000 + 1 = 0000000110001 //第三步,取反后加1得0000000110001
0000000110001 有符号数的十进制为49
第四步,取该十进制数的相反数 得 -49
举报