总结起来,我有点疑问。
目录
1、关于二进制显示
1、正数补数
2、负补数
3、取逆运算
1、关于二进制表示这里有几个概念,关于原码、二维码、反码
补数)在计算机系统中,数值一律用补数表示(被存储)。
(正数补数是其原始代码。 例如,如果十进制8,其二进制的源代码表示为00001000,则其补数为00001000。 最高有效位为符号位。 这里,用0000 1000的红色表示的0是符号比特,0表示正数,如果是1则表示负数。 例如,如果是1000 1000,则表示-8。 )
128明明可以表示为10000000,那么不知道是否有最高位是符号位的嫌疑。 那个10000000不应该表示负数吗? 其实我自己的理解错了,所以我来说明。 首先128是整数,整数是4字节,字节是8位。 因此, 128的正确源代码是000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 可以用以下一句话来回答。
8位二进制码的有符号数范围只有-127~ 127 (补数为-128~ 127 ),所以表示128需要9位二进制码。 从这句话可以看出,需要的字节数应该由整数的大小决定,不必列出所有的字节。 上例中的8在1字节表示的数字范围内,因此可以直接用8位二进制表示,最高位表示符号位。
所以理解数据的二进制表示,接下来开始理解。
1、用正数补充正数后,反码=补数=原码
2、负数补上负数会有点复杂
例如(-4 ) )。
首先,(4)的二进制文件是0000 ) 0100
因此,(-4 )的二进制文件为1000 ) 0100
(4)的反转(取反转) :符号保持1,后面的各位取反转,成为1111 ) 1011
(4)补数)用反码加1,用二进制数相加,用二进制数加1。 会是1111 1100
3、逆运算计算机的运算符逆运算是如何计算的呢?
例如,0011 1100表示整数60是在计算机上执行反向操作的结果-61。 这是什么意思?
先来取反,拿到1100 0011。 如果我们简单加起来就是195,不是-61吗?
OK,我知道计算机里互补地存储着数据。 所以,要取相反的二进制码,需要求出其补数。 此时的补数表示最后的整数。 让我们来看看。 这里,1100 0011的最高有效位是1。 这表明是负数。 那么,需要先取相反的二进制数,然后再相反。 符号比特不变,为1011 1100。 补数=反符号1,所以1011 1100加1成为1011 1101。 此时,转换为十进制时为-61。
上面的方法用来理解为什么是-61就可以了,但是要计算的话这里还有一个快速的方法。
相反得到的1100 0011表示整数195,可以直接使用195-256=-61