如果页面打开时，数学公式显示为一些奇怪的数字和字符，请刷新页面，直到看到数学公式！为什么要用补码？我们有 原码、反码、补码这么多种码，那为什么signed型的许多类型数据，比如int、char，还有大量的二进制数据，是以补码的形式存放在寄存器里，而不是以简单明了的原码形势呢？我们现在来用二进制做一个减法 64 + (-16) = ？原码的减[scode type="yellow"]这里我们使用一个字节(8位)的标准__int8(char)类型，来表示带符号的二进制数[/scode]显然，十进制数64的二进制为：01000000而十进制-16的二进制为：10010000 符号类型的首位数字为“符号位”，0代表正数，1代表负数。做个减法 原码符号位不参与计算，数值位进行加减。$$ \begin{align} 01000000 \\ +\quad10010000 \\ ——————— \\ 11010000 \end{align} $$なに！？二进制的1101000是十进制的 -80，显然这是错误的，原码不可以用于减法运算。于是有人发明了 反码反码的减人为规定反码最高位为符号位，正数为0，负数为1，反码正数与原码正数格式一致，反码负数为负数绝对值的原码按位分别取反所以，64的反码为01000000-16的反码为11101111我们再来做一下减法，请注意，在反码中 如果最高位(符号位)发生了溢位，则需要在最低位加上1$$ \begin{align} 01000000 \\ +\quad11101111 \\ ——————— \\ (第九位溢位舍去，最低位加一)100101111 \\ +1 \\ ——————— \\ 00110000 \end{align} $$00110000代表十进制48，显然64+(-16)=48，减法运算正确。不过这看起来很完美的方法却有一点小纰漏：二进制反码十进制00000000+010000000-0你有听说过+0和-0的存在吗？反正我没有，虽然我可以容忍，但是反码减法的算法规则比较复杂，需要增加计算机内部逻辑组件额外判断溢位，会影响计算效率，在那个年代这是不能容忍的。于是就有了 补码补码的减正数的补码与原码格式相同，负数的补码,是将原码变为反码，再加上1于是，64的补码还是：01000000-16的补码是：11110000再来做一下减法，并且 补码的加法更简单，直接丢弃溢位，不需要针对溢位单独处理或者说 符号位要作为数的一部分一起参加运算，符号位产生的进位要丢掉$$ \begin{align} 01000000 \\ +\quad11110000 \\ ——————— \\ (第九位的1溢位直接舍去)100110000 \\ ——————— \\ 00110000 \end{align} $$やりますね显然00110000变为48，那么问题来了$$ 10000000\quad \& \quad00000000 \\ 现在各自表达什么意思？ $$二进制补码十进制10000000-128000000000ん？为什么10000000变成-128了呢？这其实是完成了一个数字上的闭环：四位补码1000为十进制的-8，八位补码10000000为十进制 -128,其实就是把最高位符号位的数字，在用作表示正负的同时表示数值位。然后最高位为1的负数的表示，就由这个最大负数加上后面的数值位，举个栗子：二进制补码的10000001$$ \begin{align} 10000001 \\ =\\ \quad10000000 \\ +\quad00000001\\ ——————— \\ (这里用十进制方便理解)-128 \\ +\quad1\\ ——————— \\ -127\\ \end{align} $$所以以此类推：二进制补码十进制0111111112710000000-12810000001-127···········11000000-64··········11111111-100000000000000001 这样就实现了一个闭环，只要不断加下去，数值就会不断变大，除了在01111111时再加一，最大正值会变成最小负值以外，只要不断+++，就可以从起点环绕一圈再回到起点.现在我们再来看看不同数据类型可以表现的数据范围：[scode type="green"]signed\unsigned意味着有符号\无符号一个字节为8bit，也就是占八位[/scode]类型名称字节其他名称值的范围int4signed-2,147,483,648 到 2,147,483,647unsigned int4unsigned0 到 4,294,967,295__int81char-128 到 127unsigned __int81unsigned char0 到 255__int162short, short int, signed short int-32,768 到 32,767unsigned __int162unsigned short, unsigned short int0 到 65,535现在可以看懂这个表了吗？
今天博主购买了一个国外商家(Servarica)非常良心的特价大盘鸡，让我们来康康！商家支持Alipay\Paypal本人推荐Alipay,因为对于外国商家,他们并不喜欢中国消费者使用Paypal,因为很多人滥用申诉,支付渠道是你的权力,这里博主不说太多.服务器地点位于蒙特利尔 加拿大，网络速率为100MBps. VPS框架为Xen但是在询问客服后，他们告诉我在不远的将来，将会提供1Gbps网络，客户将（似乎是免费）升级到1Gbps的网络，但是应该有流量的限制，现在是100TB on 100Mbps非常好的一点是，商家提供了Win Server 2012和2016试用版，不用自己去DD系统了!话不多说!让博主先来试试水不管是刷PT，还是业务，爬虫，都可能对大硬盘的VPS有要求，现在我们来看看这个性价比超高的大盘鸡怎么样?2020/3/1更新,10刀和11刀套餐建议装Linux,装win长期下载跑CPU会被挂起,重启vps很烦,20刀可以为所欲为,网络不错.网络速率 100Mbps(现在)据LOC论坛的坛友说法，可以跑满100Mbps刷PT,从我的测试来看确实应该可以.并且虽然服务器在加拿大,但是博主在本地联通 Windows10 链接远程VPS的Win时，非常流畅这里提供一个测试IP:162.250.190.17现在是正午,很流畅,不知道晚高峰如何?硬盘读写虽然是廉价大盘鸡,但是我们还是得对硬盘抱有小小的幻想Tip:这个优惠套餐并不保证你的数据安全,价格摆在这里,所以,请不要把你的重要数据放在它上!!!非常好看的读写速度,应该是很多大的机械硬盘的RAID,才能有这样的读写和容量,可以说性价比非常高!博主用过不少独服和VPS,但是对于大盘鸡,博主用过北卡|Soyoustart|Online|Hetzner|Drserve|wholesaleinternet等等但是博主说良心话,这个VPS的性价比真的很高,博主买了一两年VPS,没遇到这么符合博主要求的(主要是便宜lol)性能和购买在购买时,对于有爬虫爬取任务和高CPU占用的,博主推荐Manmoth plan也就是20刀每月的,因为它的CPU是Dedicated,意味着这两个CPU你可以完全独占一直100%,并且8G内存和8T硬盘也非常良心,要不是博主这里还有一台Atom独服,博主就下手了最后,上购买链接:这里是博主的推荐链接,点击这里购买,博主可以获得一定的返利,你的支持将会让博主更新更多好的文章,但是这是你的权力博主无权干涉.AFF购买链接无AFF链接,博主不会得到返利打开网页后是网站主页,这里没有提供特卖的信息,你可以点击购买任何一个服务,进入Whcms的购买界面,选择LET BlackFriday Offers,就可以看到特价套餐请注意,Whmcs并没有注册选项,你必须在购买服务时注册!购买某个服务时,便会让你填信息注册!请注意信息的真实性,随便乱填商家是不会卖给你的,但是请注意名字和住址请用英文(拼音)表达,国外商家很注意信息的真实性!就到这里,我们下篇文章见!