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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yangchao8907 中级黑马   /  2013-8-6 11:38  /  1142 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-8-6 19:02 编辑

~6=-7,为什么?运算过程。~有什么应用吗?(~:取反符号)
     6: 0000-0000 0000-0000 0000-0000 0000-0110
取反: 1111-1111 1111-1111 1111-1111 1111-1001
        1000-0000 0000-0000 0000-0000 0000-0110  是不是有这么一步?为什么?
+1: 0000-0000 0000-0000 0000-0000 0000-0001
--------------------------------------------------------------------
        1000-0000 0000-0000 0000-0000 0000-0111   --------   -7

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

7 个回复

倒序浏览
与你一同学习!{:soso_e141:}

qufan.PNG (25.17 KB, 下载次数: 15)

qufan.PNG

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
其实简单点 ~6 + 1 = - 6 ,那么 ~6 就等于 -6 - 1 = -7。
回复 使用道具 举报
     6: 0000-0000 0000-0000 0000-0000 0000-0110
取反: 1111-1111 1111-1111 1111-1111 1111-1001只要求出这个数的十进制的值
就可以反过来思考,二进制代码是负数,先减1后取反
        1111-1111 1111-1111 1111-1111 1111-1001
    -   0000-0000 0000-0000 0000-0000 0000-0001
-------------------------------------------------------------------
        1111-1111 1111-1111 1111-1111 1111-1000
反过来
       0000-0000 0000-0000 0000-0000 0000-0111--------   7
在返回去
不就是-7了
     1000-0000 0000-0000 0000-0000 0000-0110  这个是什么?要是负数前必须全是1111-1111 1111-1111 1111-1111 1111

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 EYE_SEE_YOU 于 2013-8-6 13:28 编辑

一个数取反加1等于这个数的负数
所以你看,取反就是二进制中把所有的1和0互换一下
    6:0000 0000 0000 0110
  ~6:1111 1111 1111 1001  这个值算出来是-7,   最末位加个1就等于-6了
   -6:1111 1111 1111 1010
  ~-6: 0000 0000 0000 0101   这个值算出来是5,   最末尾加个1就等于 6了
这个是规律,
用取反可以快速算的
某个数的负数的二进制值-a=~a+1(末位)

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
     6: 0000-0000 0000-0000 0000-0000 0000-0110
取反:  1111-1111 1111-1111 1111-1111 1111-1001

因为你先把6转换成二进制 ,6取反运算后变成了一个负数 ,这串二进制代表一个负数,将它转换成int型过程:

     (1111-1111 1111-1111 1111-1111 1111-1001) -1 =1111-1111 1111-1111 1111-1111 1111-1000

再取反:0000-0000 0000-0000 0000-0000 0000-0111 =7

再因为整数6取反运算变成负数 ,所以结果为 -1 .

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
首先要理解负数二进制的表现形式,就是对应的正数的二进制取反加1
取反就是将二进制的中的1变0  0变1
对于本题 我的理解是   如果6取反(即:~6),思考:
反向考虑正数6的负数的二进制的表现
6: 0000-0000 0000-0000 0000-0000 0000-0110
取反: 1111-1111 1111-1111 1111-1111 1111-1001
        1111-1111 1111-1111 1111-1111 1111-1001
   +   0000-0000 0000-0000 0000-0000 0000-0001
----------------------------------------------------------------------------
        1111-1111 1111-1111 1111-1111 1111-1010
得出来是  -6
所以我们能得到:    ~6 + 1 = - 6
即:              ~6后加1得  - 6               
反过来:         ~6后减1得  -7

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报

~6=-7,为什么?
等于这个数的绝对值,取反加1,。
运算过程。~有什么应用吗?(~:取反符号)
     6: 0000-0000 0000-0000 0000-0000 0000-0110
取反: 1111-1111 1111-1111 1111-1111 1111-1001
        1000-0000 0000-0000 0000-0000 0000-0110  是不是有这么一步?为什么?//因为一个负数的二进制的最高位是1.


+1: 0000-0000 0000-0000 0000-0000 0000-0001
--------------------------------------------------------------------
        1000-0000 0000-0000 0000-0000 0000-0111   --------   -7//所以结果为-7.

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马