/* Note:Your choice is C IDE */ include "stdio.h"int main(){ unsigned char a=0x11;unsigned char b=(~a)<<4;//对a先按位取反,原因有括号,非优先级高,所以~a=~(00010001)=11101110,再左移四位,其余各位补0,原因是char是8位,所以应该是b=11100000=224 printf("b=%d\n",...
C++中的位运算符,只能用于int和unsigned int类型的,宽度小于int的会被隐式转化成int。左移当然没问题,因为截断的时候用不到高位,右移的时候,高位的1被截到b中,造成无论移位和取反的顺序,结果都是一样的。include <stdio.h> include <stdlib.h> int main(){ unsigned char a=0x11;unsigne...