黑马程序员技术交流社区
标题:
关于~运算符
[打印本页]
作者:
longbao
时间:
2015-7-11 00:11
标题:
关于~运算符
计算机中数据的运算和存储都是以二进制的补码进行的。
~是位运算中的反码运算符。
首先,正数的原码,反码和补码都是一样的。
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
作者:
453203489
时间:
2015-7-11 00:14
上学的时候关于远嘛补码的有过接触, 但是没有仔细学习, 很多知识点忘却了, 类似楼主说的合适考虑到符号位是否取反的问题, 谢指教。
作者:
禾叶青青
时间:
2015-7-11 08:19
还不错,收藏了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2