为什么 a = 2;a = ~a;输出为什么是-3

char a=2;

a=0000 0010

~a的意思是取反,取反操作是按bit取反,0变1,1变0,这个操作与符号位无关

~a=1111 1101

它表示出来的是补码!!

补码解释成原码:按原变补顺序逆序操作,即,

先-1为:1111 1101-1=1111 1100

再取反码:符号位不动,数值位取反

1111 1100反码:1000 0011

第一位是符号位,余位为数值

第一位1表示负数

0011=2+1=3

故结果为-3

你可能感兴趣的:(为什么 a = 2;a = ~a;输出为什么是-3)