int a=13,表达式~a

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/18 18:37:30
int a=13,表达式~a
xTIr@ YG'Yer%Yd  6SAw7+j8WBZԇGN>ߩ ovjv?=:G տE&dlӬT69Yy#ȳ2+@ *!p(r`4^A!v>~Kê9Z3iy@,6q'\⌎ Dtճ0< >qujI0sbUV0< K|dJ9t(!3H/qܟO+OyT܂ YV  qRa d5h^)H4TYl,+CNq%3tܸVdQcalQ`e̢9A BY ;'o^@~@n@N|5SQӫ{HwըɲY{vKzyݕ)uM."ci=>7b3/xP܅,M}v?LtJf#bɑ)`

int a=13,表达式~a
int a=13,表达式~a

int a=13,表达式~a
我以前也没怎么搞明白,顺便自己研究了下,大家共同进步哈!
(int占4字节的情况计算出得结果是一样的)
1.方法
先转换成对应的2进制(int型在计算机中是4字节,这里以2字节位例,具体占自己数看计算机)
2.具体步骤
00000000 00001101(13对应的2进制)
11111111 11110010 (取反)
11111111 11001000 (左移2位,这个是计算机中存储的真实内容)
3.关于计算机的存储(补码):
在计算机系统中,数值一律用补码来表示(存储).
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理.另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃.
(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码.
(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1.
因为上述结果首位为1,所以是个负数.他的原码(即真实值)是首位不变,其他位取反再加1
取反:
10000000 00110111
加1:
10000000 00111000(左边1是符号位,1表示为负,111000转换成10进制就是-56)
所以答案是-56
(我觉得补码的原因,因为有符号位.1000 和0000那是表示+0和-0,计算时会引起混乱)