码迷,mamicode.com
首页 > 编程语言 > 详细

C语言取反运算~

时间:2014-09-09 13:50:59      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:二进制   c语言   十进制   取反   

问题:  printf("%x,%d\n",~7,~7);

解:


十进制数字 7 的二进制码 


00000000 00000000 00000000 00000111

按位取反运算 ~7


11111111 11111111 11111111 11111000 


所以  printf("%x\n",~7);  //十六进制输出:fffffff8

11111111 11111111 11111111 11111000  的最高八位符号位(11111111,表示负数),有符号整数在计算机中采用补码存储,即 该二进制数为所求整数的补码。

负数的补码 = 原码 取反 + 1;

所以   原码 = 补码 - 1  取反 

所以有:

11111111 11111111 11111111 11111000(补码)

11111111 11111111 11111111 11110111( -1 )

11111111 00000000 00000000 00001000(取反 得到原码 -8)


所以  printf("%d\n",~7);   //十进制输出:-8


C语言取反运算~

标签:二进制   c语言   十进制   取反   

原文地址:http://taiyi928.blog.51cto.com/7898859/1549877

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!