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
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
本文链接:https://www.haomeiwen.com/subject/xprwattx.html
网友评论