OPlin的小站 - VPS推荐
type: channel
link: https://www.oplin.cn/index.php/category/%E6%8E%A8%E8%8D%90/
description: VPS推荐
items: 原码 反码 补码
items: 进制转换
items: Servarica特价大盘鸡(大硬盘VPS)推荐!

原码 反码 补码
type: item
date: 2022-10-09T01:24:00+08:00
description: 如果页面打开时，数学公式显示为一些奇怪的数字和字符，请刷新页面，直到看到数学公式！为什么要用补码？我们有 原码、反码、补码这么多种码，那为什么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 __int81unsi…

进制转换
type: item
date: 2022-09-27T13:49:00+08:00
description: 部分转载于 http://c.biancheng.net/view/1725.html2、8、10、16进制：2进制： 0 18进制：0 1 2 3 4 5 6 710进制：0 1 2 3 4 5 6 7 8 916进制： 0 1 2 3 4 5 6 7 8 9 A B C D E F进制的转换1. 2\8\16 转 10进制：假设当前数字是 N 进制，那么：对于整数部分，从右往左看，第 i 位的位权等于$$N^{i-1}$$对于小数部分，恰好相反，要从左往右看，第 j 位的位权为$$N^{-j}$$。8进10$$ \begin{align} &423.5176 = \\ &4×8^2 + 2×8^1 + 3×8^0 \quad after \quad point+ 5×8^{-1} + 1×8^{-2} + 7×8^{-3} + 6×8^{-4} = 275.65576171875（十进制） \end{align} $$16进10$$ \begin{align} &9FA8C = \\ &9×16^4 + 15×1^63 + 10×16^2 + 8×16^1 + 12×16^0 = 653964（十进制） \end{align} $$2进10$$ \begin{align} &1010.1101 = \\ &1×2^3 + 0×2^2 + 1×2^1 + 0×2^0 \quad after\quad point \quad+ 1×2^{-1} + 1×2^{-2} + 0×2^{-3} + 1×2^{-4} = 10.8125（十进制） \end{align} $$2. 10进制 转 2\8\16进制：十进制整数转换为 N 进制整数采用“除 N 取余，逆序排列”法1. 10进8，所以除8求余,逆序排列,十进制36926得八进制1100762. 10进2，所以除2求余,得十进制42得二进制1010103. 10进8的小数，给小数成8出整数，而这个整数就是进制后的小数，算出来的数正向排列，所以十进制0.930908203125得八进制0.73454. 10进的小数，同理，若小数点前后都有数字，那就把两种方法叠加。得十进制0.6875得二进制0.1011所以十进制 42.6875 转 二进制为 101010.1011十进制 36926.930908203125 转 八进制 为110076.73455. 特别的是，有时候一些小数是没有办法全部变为整数的，这个时候，我们一般会保留到某位小数，只要精度够，省略非常小的数也是可以的。十进制 0.51 对应的二进制为 0.100000101000111101011100001010001111010111...，是一个循环小数；十进制 0.72 对应的二进制为 0.1011100001010001111010111000010100011110...，是一个循环小数；3. 8/16进制 和 2进制之间的转换对于2/8/16之间的转换，主要是划分区段，然后一一对应的补出数字即可二进制八进制十六进制000(8) / 0000(16)00001(8) / 0001(16)11010(8) / 0010(16)22011(8) / 0011(16)33100(8) / 0100(16)44101(8) / 0101(16)55110(8) / 0110(16)66111(8) / 0111(16)77100010(逢8进1)81001119101012A101113B110014C110115D111016E111117F不难发现，对于一个四位二进制1111各位的1代表16的1，十位的1代表16的2，百位的1代表16的4，千位的1代表16的8， 于是只要做加法就可以了！对照上表，我们便可以开始转化了8进22473 -> 0101111000112进8001110111100 -> 167416进2A5D6 -> 10100101110101102进160010110101011100 -> 2D5C总结一下，2/8/16到10的相互转换2 / 8 / 6 之间的相互转化你学废了吗

Servarica特价大盘鸡(大硬盘VPS)推荐!
type: item
date: 2020-02-28T12:05:00+08:00
description: 今天博主购买了一个国外商家(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并没有注册选项,你必须在购买服务时注册!购买某个服务时,便会让你填信息注册!请注意信息的真实性,随便乱填商家是不会卖给你的,但是请注意名字和住址请用英文(拼音)表达,国外商家很注意信息的真实性!就到这里,我们下篇文章见!