按位取反有关问题有一点不太明白的
按位取反问题有一点不太明白的,
我的疑惑在于,按位取反"~"与在求补码时的取反是不是不同的?按位取反时,符号位要变,然后在求补码时的取反符号位不用变化.
例如:~12=-13,这个答案是肯定的了,也知道在计算机中是以补码的形式存放的,
12的二进制是: 01100 第一个0是符号位(计算机中是以补码的形式存放,所以此处也是补码)
按位取反之后: 10011 (此时符号位有变化)
这个数直接转换成十进制的话是得不到-13的.
因为10011还是存放在计算机内存中,所以这个依然是补码
因此要先转成原码再转成十进制
10011先减1,再取反便得到原码:11101 (此时符号位并没变化)
问题就是在符号位上,这里这样理解对不对呢?
按位取反"~"与在求补码时的取反是不同的?????
------解决方案--------------------
求补码的时候的按位取反是不包括符号位的 需要吧符号位排除在外
------解决方案--------------------
例如:~12=-13,这个答案是肯定的了,也知道在计算机中是以补码的形式存放的,
12的二进制是: 01100 第一个0是符号位(计算机中是以补码的形式存放,所以此处也是补码)
按位取反之后: 10011 (此时符号位有变化)
这个数直接转换成十进制的话是得不到-13的.
---------------------------------
1、12的二进制是1100不是01100,前面有多个0,按照计算机不同
2、12取反的二进制为11111111 11111111 11111111 11110011 这个是32位机上的表示
3、-13的是13取补码11111111 11111111 11111111 11110011,补码是取反加1
所以2个是相等的
------解决方案--------------------
求补码是部队符号位做操作的,即忽略符号位,其它位按位取反,然后加1.由补码求源码也是符号位不便其它位按位取反加1.
单独的取反操作是对所有位的操作。这是与求补码中的取反操作有一点区别的。
我的疑惑在于,按位取反"~"与在求补码时的取反是不是不同的?按位取反时,符号位要变,然后在求补码时的取反符号位不用变化.
例如:~12=-13,这个答案是肯定的了,也知道在计算机中是以补码的形式存放的,
12的二进制是: 01100 第一个0是符号位(计算机中是以补码的形式存放,所以此处也是补码)
按位取反之后: 10011 (此时符号位有变化)
这个数直接转换成十进制的话是得不到-13的.
因为10011还是存放在计算机内存中,所以这个依然是补码
因此要先转成原码再转成十进制
10011先减1,再取反便得到原码:11101 (此时符号位并没变化)
问题就是在符号位上,这里这样理解对不对呢?
按位取反"~"与在求补码时的取反是不同的?????
------解决方案--------------------
求补码的时候的按位取反是不包括符号位的 需要吧符号位排除在外
------解决方案--------------------
例如:~12=-13,这个答案是肯定的了,也知道在计算机中是以补码的形式存放的,
12的二进制是: 01100 第一个0是符号位(计算机中是以补码的形式存放,所以此处也是补码)
按位取反之后: 10011 (此时符号位有变化)
这个数直接转换成十进制的话是得不到-13的.
---------------------------------
1、12的二进制是1100不是01100,前面有多个0,按照计算机不同
2、12取反的二进制为11111111 11111111 11111111 11110011 这个是32位机上的表示
3、-13的是13取补码11111111 11111111 11111111 11110011,补码是取反加1
所以2个是相等的
------解决方案--------------------
求补码是部队符号位做操作的,即忽略符号位,其它位按位取反,然后加1.由补码求源码也是符号位不便其它位按位取反加1.
单独的取反操作是对所有位的操作。这是与求补码中的取反操作有一点区别的。