(unsigned char) ~0 >> 1 是什么意思?
第一步:先是把数字0的各个二进制位全部转换为1;
第二步:然后,将结果值转换为unsigned char 类型 ;
第三步:然后右移一位。
0默认为int型,占用4个字节,存储为0x00000000,~0的存储值为0xffffffff
sizeof(int) >= 2, sizeof(unsigned char) = 1
转换为unsigned char后存储为0xff,其值为255
>>1就是除以2,存储为0111 1111, 所以为255/2 = 127
所以(unsigned char)~0为ff(无符号),再右移一位为7f(即127)