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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© longbao 中级黑马   /  2015-7-11 00:11  /  1120 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

计算机中数据的运算和存储都是以二进制的补码进行的。
~是位运算中的反码运算符。
首先,正数的原码,反码和补码都是一样的。
20在内存中的二进制表示是: 00000000 00000000 00000000 00010100
~20就是对20的补码进行取反:11111111 11111111 11111111 11101011   (注意:~运算时,符号位也要参与)           
那么获得的补码对应的十进制数是什么呢?
我们知道,求一个十进制数的二进制的补码的步骤是:二进制原码取反后+1即得补码。
难么,我们接下来可以由获得的补码反向推出原码,方法是:
补码:11111111 11111111 11111111 11101011


反码:11111111 11111111 11111111 11101010     


原码:10000000 00000000 00000000 00010101      (注意:这里在取得反码的时候,符号位不参与运算,因为要保证数据的原样)

可以知道,该原码所表示的十进制数是-21。所以~20的结果是-21

2 个回复

倒序浏览
上学的时候关于远嘛补码的有过接触, 但是没有仔细学习,  很多知识点忘却了,  类似楼主说的合适考虑到符号位是否取反的问题,   谢指教。
回复 使用道具 举报
还不错,收藏了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马