A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hi虚无缥缈 中级黑马   /  2015-5-28 21:33  /  1116 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

unsigned short a=0-1; 0000 0000 0000 0000 减去 0000 0000 0000 0001后,怎么解释等于 1111 1111 1111 1111。

3 个回复

倒序浏览
这个坐观大神回答
回复 使用道具 举报
这个跟二进制的原码,反码和补码有关.具体的也不是很明白
回复 使用道具 举报
计算机中的数字是以补码形式储存的,0 - 1 = -1等价于0 + (-1) = -1对应补码就是0000 0000 0000 0000  + 1111 1111 1111 1111 = 1111 1111 1111 1111.
具体来说是补码的进制转换问题。
先将十进制转换成二进制的原码(首位是符号位0代表正数1代表负数),正数原码补码相同,负数补码是由原码除符号位(首位)外所有位取反加一得到的。所以0的二进制原码和补码为0000 0000 0000 0000,-1的二进制原码是1000 0000 0000 0001,-1的二进制补码为1111 1111 1111 1110 + 1 = 1111 1111 1111 1111。
再将二进制补码转换成十进制。0000 0000 0000 0000的十进制数就是0,二进制补码转换成十进制是取反加一得到十进制数的绝对值(而十进制的正负由补码的符号位,也就是首位决定,0代表正数1代表负数),1111 1111 1111 1111 取反得到0000 0000 0000 0000 ,加一得到0000 0000 0000 0001,补码首位为1代表是负数,所以1111 1111 1111 1111转换成十进制数是-1。
表达能力不是很好,希望能帮到你!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马