取反运算如何执行的?

hanqiou 2007-04-16 12:59:53
能部能详细介绍一下取反运算的运算过程?
不明白.

~0为什么是-1?
~7为什么是-8了呢?
数据的2进制是怎么表示的?
...全文
500 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chase_beauty 2011-04-14
  • 打赏
  • 举报
回复
首先楼主要知道负数在计算机内存中是以补码存储的,7的二进制为0000 0111,对它取反~7=1111 1000,对它取反后是一个负数,所以1111 1000的补码为0000 0111+1,为0000 1000,再加上负号,所以是-8!楼主可以看看微机原理的书,好像第二章讲的就是这个内容!
hanqiou 2007-04-16
  • 打赏
  • 举报
回复
哦,以前学的知识好象都忘记了.惭愧...
freshui 2007-04-16
  • 打赏
  • 举报
回复
错了,给你弄迷糊了:
7: 0000 0111
-8: 1111 1000
freshui 2007-04-16
  • 打赏
  • 举报
回复
11111000
你取反加一看看啊? 是什么?
当然是 0000 1000

再加个负号是啥?
hanqiou 2007-04-16
  • 打赏
  • 举报
回复
~7也就是对0000 0111取反
就是1111 1000了
为什么11111000是-8?
iu_81 2007-04-16
  • 打赏
  • 举报
回复
~是一个单目(元)运算符,用来对一个二进制数按位取反
飞哥 2007-04-16
  • 打赏
  • 举报
回复
用2进制表示就清楚了
freshui 2007-04-16
  • 打赏
  • 举报
回复
看来你不知道计算机中数据是怎么存储的

如一个字节的char

0: 0000 0000
-1: 1111 1111
你说~0是不是和-1相等啊?

同理其他..

c语言负数都是补码表示, 取反加一既是她本身
当然还要加上负号了

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧