n位二进制数能够表示的无符号整数范围即0-2的n次方-1 n位二进制数能够表示的有符号整数范围即-2的n次方到2的n-1次方-1 补码的话范围是-2的n-1次方~2的n-1次方-1
关于这点其实很多人一知半解,今天特此做一个梳理。
正式进入话题。
首先看几个例子:
假设计算机字长为8位
1的原码(8位):0000_0001
反码、补码跟原码一样。
-1的原码(8位):1000_0001
反码 :1111_1110
补码 :1111_1111
0有+0和-0之分
+0的原码(8位):0000_0000
反码、补码同。
-0的原码(8位):1000_0000
反码 :1111_1111
补码 : 0000_0000
总之,正数的原码、反码、补码一样;负数的原码就是{符号位1,绝对值原码},反码等于符号位除外的各位取反,补码等于反码加1。
其实作为硬件工程师,不需要理解太底层太原理的东西,可以直接记住上面的原则就可以了。
二进制数是在通常所见到的十进制数之后发展起来的一种新的数的表示形式,然后我们该如何表示一个二进制数呢,在通常意义上我们像十进制那样,给一个二进制0,1串,加上正负号,或者有符号,无符号的某种标志,就可以表达清楚了。然而作为二进制或者其他进制,它存在的意义不再是为了人能够清楚的计数,而是为了满足机器(计算机)。所以,诞生各种二进制数表示法,原码,反码,补码,而且,最关键一点,为了计算效率和方便,计算机中数值还都是按照补码存放的,这一点相信大家应该都清楚。
这里截取一段话:
8位二进制能表示的数范围是2的8次方,即256,所以带符号整数的范围就是-128到127,无符号整数的范围是0-255。
二进制是计算技术中广泛采用的一种 数制。二进制数据是用0和1两个数码来表示的数。它的
基数为2,进位规则是“逢二进一”,借位规则是“借一当二”
n位二进制数能够表示的无符号整数范围即0-2的n次方-1
n位二进制数能够表示的有符号整数范围即-2的n-1次方到2的n-1次方-1
补码的话范围是-2的n-1次方~2的n-1次方-1
用 n 个二进制表示的无符号整数范围是?
答:是 0~2^n-1。
用 n 个二进制表示的带符号整数范围是?
答:原码和反码,表示的范围都是:-2^(n-1)+1~+2^(n-1)-1。
n 位补码表示整数范围是?
答: n 位补码,表示的范围是:-2^(n-1)~+2^(n-1)-1。
觉得难用不习惯,可以选择不用。大量的人为Python开源代码,资源丰富,我表示乐在其中。