二进制如何表示负数?
大家好,今天看一下二进制里面已经看过整数和小数部分,但是其实数字部分还有一部分是负数没有提到,今天稍微了解一下这样的负数和二进制怎么样的转换。
先看一下这个概念,按照惯例,负数的最高位是为一表示为负数,如果不是唯一0就表示是正数或者是有说明的数字是有符号的还是无符号的。因为按照数字在计算机里面,如果因为每个语言就是后端,比如C++或者Java、Python这些语言,它有符号和无符号是有这样的修饰符号的。
如果是无符号的,无符号就是没有复数,有符号的就是表示有复数的这种。先看一下负数要转成二进制是有这样的过程,并不是将二进制这样的8位的零,一把最高位0改成一就表示是负数了。虽然是负数,但是已经不是原来的是金字的数了,它的过程是这样的。
在这个说之前是有几个概念的,原码是什么?原码就是除符号位本身就是正数的,转为二进制就是原码,也就是大于0,大于等于0的正数转成二进制8为二进制,这个码本身就是原码。反码是将原码的每一个位0和一给互相取反,0变成11变成0,这就是反码。
补码是对于正整数或者0来说,原码和补码是一样的,不需要去操作。对于复数的补码是要在求助的反码之后再去加一,是这样的概念。
后面看一下这样的例子Demo,比如负5用二进字如何去表示?都是按照一个字节,就是默认8位,去看一下应该是怎么样操作。
因为正5的原码是101,前面补齐5个0,最高位一,因为-5是负数,所以最高位的0要变成一,也就是一零零零零一零一,它的反码就等于0和一给取反。但是最高位的一不变,因为它是符号位,这个是表示符号位,不能把符号位给变成0,所以该是0的地方变为一,得到它的反码,最后还得加个一,然后0变成一。