C++中取反 的问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 04:35:23
我最近在想 负数在内存中是怎么显示的

为什么0 取反就的 负数 在内存中不是 应该是111111111111111111111111111111111
为什么得到的数是-1 呢不解
望高手们帮帮忙

1、这是计算机原理的内容。

2、所有整数都是以所谓补码存放的。而且内存中的第一位表示符号:1为负,0为正。

3、具体补码可以自己搜索知识。

补码就是原码先取反,再在最后面加一。
但是第一位是符号位,0表示正数,1表示负数。
下面就是反过来求原码的过程:
111111111111111111111111111111111 中,第一位是1,是负数
后边的
11111111111111111111111111111111里边,是补码表示的数字。
最后一位先减去1,就是:
11111111111111111111111111111110
再全部取反:
00000000000000000000000000000001 就是1;
又因为是负数,所以是-1.

0取反绝对是0xffffffff
错在你用十进制查看了,这样一来需要把二进制转换成十进制。
换成十六进制查看试试