老师在讲字符类型(比特类型)转化为十进制(整型)的时候有问题吧?也就是课程中"int rs3=(int)((arr[3]&0xff)<<3*8)"有问题吧?比特类型只有1两字节也就是16位,那么arr[3]怎么能够左移3*8=24位呢?只是因为十进制的8143对应的二进制的最高十六位都是0,也就是arr[3]=arr2]=0000 0000(b).所以”左移24位“之后再强制转化为Int类型时还是等于0,因为恰好掩盖了这个错误吧?
2016-03-23
已采纳回答 / Lynn丶Hung
二进制用补码进行运算。3的补码是00000011(注:最高位0表示为正数、若为1则表示为负数;正数的补码与原码、反码相同),1的补码是00000001;然后把这两个数相加(注:相加2进1)得到00000100(把它转化为原码还是00000100即为4)
2016-03-21