黑马程序员技术交流社区

标题: 关于位运算的按位取反 [打印本页]

作者: jx836202365    时间: 2015-6-10 23:29
标题: 关于位运算的按位取反
#include <stdio.h>

int main(int argc, const char * argv[]) {

   
    int b =~7;
   
  
    //     000000000000000000000111  7的原码
    //     111111111111111111111000  ~7的值
    //     100000000000000000000111  ~7的反码
    //     100000000000000000001000  ~7的补码
   
    printf("b = %d",b);
    return 0;
}
这是我自己算的。~7是仅仅对7的原码按位取反,还是对它内存中存储的那个值即补码进行按位取反。从计算结果逆推好像是对原码啊,但是后面算值的时候又要将那个值当作内存中存储的数据即补码,还需要 除了首位取反加1计算原码,这不是前后矛盾么
作者: 晗修    时间: 2015-6-11 01:02
。。。。。。。。。。。。。正数的原发反码补码都是一样的
作者: 晗修    时间: 2015-6-11 01:04
对了 忘记说 ~是按位取反 和求反码不是一个意思




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2