char x = /xe0; //因为是/x开头的 所以是十六进制哦
将/xe0 分解成二进制 十六进制位可以分成4个二进制位,即
e 0
1111 0000 B
所以 /xe0 的 二进制数是 1110 0000
因为计算机是以2进制补码的形式表示的,所以1110 0000要表示成补码的形式
正数的补码与原码相同。
负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。
符号位如果为1,表示负,如果为0,表示负
因为1110 0000的符号位为1,所以为负
所以我们要用负数的补码哦
首先我们对1110 0000 逐位取反,但符号位除外 的 1001 1111
然后对1001 1111 + 1 得 1010 0000
符号位为负,所以1010 0000的值就为负,然后后面的7位按权展开运算得32,
加上符号位就得 - 32
PS:若有不明白的地方,可以追问
char x = '\xe0';
也就是赋值为0xe0,二进制表示为:11100000,以10进制打印出来就是-32