首页 > 编程知识 正文

负数的反码和补码(1的原码反码补码)

时间:2023-05-06 15:49:52 阅读:105115 作者:4939

最近,边肖在写C代码转换的时候简直要疯了。好像很多资料觉得电脑变成底层的时候我技术不太好,我来补一下,在这里总结一下分享给大家。

众所周知,计算机只知道0和1,但0和1对人不友好。如何转换它们?这需要从电脑的存储开始。

00-1010位:来自英文bit,音译为“bit”,意思是二进制bit。位是计算机中数据存储的最小单位,11010100是一个8位二进制数。

Byte:来源于英语byte,音译为“Beit”,习惯上用大写“B”表示。字节是计算机中数据处理的基本单位。在计算机中,信息是以字节存储和解释的。规定一个字节由八个二进制位组成,即一个字节等于八个位(1字节=8位)。八位二进制数的最小值为00000000,最大值为11111111;通常一个字节可以存储一个ASCII码,两个字节可以存储一个中国国家标准码。

00-1010一般来说,字符型变量在计算机内存中占据一个字节,也就是八个字节。无符号表示无符号,有符号表示有符号。默认情况下,Char是未指定的类型。

如果是未插入的char,那么最高位(最左边)可以用来表示数字,那么char可以表示的范围是二进制0000000 ~ 1111111,换算成十进制就是0~255。

如果是带符号的char,那么需要用最高位(最左边的位)来表示正负0为正,1为负,所以只有剩下的7位可以表示数字,所以可以表示的范围是1111 1111 ~ 011111,转换位的小数为-127~ 127。还有一个1000 0000来表示-128,因为没有负零的概念。计算机中的负数都用补码表示。补语的概念将在后面讨论。

无符号int和有符号int是基于char来理解的,只是int是四个字节,即4*8=32位。默认情况下,Int是带符号的。因此,无符号int的取值范围是0~2的32次方-1。EDINT指示的范围是:-2到31次方~2到31次方-1。

(同Internationalorganizations)国际组织

位和字节

要理解清楚原码、补码和补码,首先需要理解两个额外的概念:机器数量和真值。

机器:计算机中一个数字的二进制表示被称为该数字的机器号。机器的数量是有符号的。比如十进制的数字3,计算机字长8位,换算成二进制就是00000011。如果是-3,就是10000011。00000011和10000011这里是机器的数量。

真值:以上面的机号0000011(十进制3)为例,它的形式值是131(由二进制转换为十进制),但实际上我们要的是3,所以需要去掉最高符号位:0000 0001=000011=3的真值,100000001=000的真值。

好了,了解了以上两个概念,我们可以看看原代码、补码和补码。

原码:hxdxg,原码是我原本想表示的值的二进制码,所以原码3/-3需要考虑符号位:原码3是0000 0011。-3的原始代码是1000 0011。

反码:

正数的倒数就是它自己

的负数基于其原始代码,符号位不变,其他位反转。

3原码为:0000 0011,逆码为:0000 0011。

-3原码为:1000 0011,逆码为:1111 1100。

补充:

正数的补数是它自己

也就是1在它的补的基础上。

3原码为:0000 0011,逆码为:0000 0011,补码为:0000 0011。

-3原码为1000 0011,补码为1111 1100,补码为1111 1101。

00-1010看完以上内容,大家一定很疑惑。为什么需要这么多码?这是因为电脑不区分‘符号位’,因为这显然让电脑的基本电路设计变得非常复杂!所以人们想出了一个把符号位考虑进去的方法。我们知道,根据算法,减去一个正数等于加上一个负数,即: 1-1=1 (-1)=0,所以机器只能加不能减,所以计算机操作的设计比较简单。

此外,加减乘除,正数都很容易处理。如果遇到负数,就会有问题。让我们看看如果用原始代码操作3-3会发生什么:

3-3只在电脑里加,所以3-3=3(-3);

000 0011 1000 0011=10000110,我们计算出该符号转换为十进制:-6;

既然原码不行,为什么不用反码呢?好吧,试一试。

000 0011 1111 1100=11111 1111,当我们计算符号时,它是-127;

然后再次尝试补语。

0000 0011 1111 1101=00000000;当我们把符号数成十进制时,就是:0;

好,没错;

因此,计算机的存储值都是互补码。至于补码背后的数学原理,就超出了编程的范围,主要是因为边肖不懂!任何感兴趣的人都可以去看看。这似乎是某种同余原则。

00-1010纯手KEY,希望大家支持边肖并关注它~ ~ ~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。