取反(~)和相反数 是不一样的!!!

这几天正在看补码的问题,发现这个东西实在是太神奇了,

在计算机存储的都是按照补码的方式,这样的方式可以进行计算,但是除了补码还有原码和反码

他们虽然都可以表示数字,但是原码和反码不能进行计算,就是不符合计算规则,怎么使用都是不行的


这个时候就出现了,补码的规则,这种规则可以让计算几中的数字进行计算,简单的说就是

让两个相反数相加结果为0,按照补码的规则是可以行的通的。


在这里我就要简单的说一下,取反操作和一个数字的相反树,这两个操作是不一样的,

他们之间是有区别的:


什么是取反操作呢,简单的讲在计算中我们都是知道任何数字还是字符都是以二进制形式存在的。

取反的操作就是在写变量名之前加上一个(~)符号之后就是进行的取反操作,他是把二进制中1 变成 0,0 变成 1

由于二进制中除了1 就是 0 ,所以,可以这样的操作。


什么是相反数呢 ?

小学的时候自己有没有给一个数字进行相反数的操作,这样的例子实在是太多了,但是在计算机中是不一样的操作

首先你要明白,如何表示负数,这个负数的概念在一开始学习变成语言的时候我是不明白的,在后来的学习的过程中

我清楚的知道了,这个负数和整数的储存是有区别,

例如:

一个 变量里 存放了一个 数字 3

请问他的二进制形式是多少呢 ?

这样的问题在一开始学习编程语言的时候经常的遇到

答案就是 :0000 0011


但是你有没有想过 -3 是什么样的二进制 :

要想知道-3在计算机中的二进制形式也是非常简单的:

只要把他进行按位计算就可以一个一个的输出来

答案是 : 1111 1101


这就是-3的二进制表示形式,虽然在学校里我们知道在二进制的最高位

是用来表示他们的符号的,简称符号位,但是你有没有发现就算是最高位是1

但是其他位也不需要1这个数字了,为什么出现了这样的二进制形式呢?


答案就是他使用了 补码表示法 :

在创建补码表示法的时候,发现,如果给一个数字进行取反,然后在末尾加1之后在和原来的数字相加一定会等于0

所以,补码表示法就这样创建了。


利用补码表示法就可以简单的进行计算了,而且十分的简单。































评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值