首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编程我是认真的之进制

进制是一种进位的计数方法,通常逢x进一。

为什么要有进制呢?

以数指头举例,两只手只有十个指头,最多能数到9,那如果是10怎么办呀?于是就拿根树枝放在地上表示1,然后用手指头再从0开始数。地上的1和手指头共同组成了10~19的数。

地上的树枝就是被进了一位,而这个过程就是发明10进制的过程,这个不知名的数学家很伟大。

进制与我们的生活息息相关,千年以前,我们中华的老祖宗就发现了进制—太极,以及由太极发明的解读人生的哲学二进制码—八卦。

我想如果老祖宗知道我们没有用他的发现发明计算机,而是天天拿来给人算命的话,估计要气死了吧!

时间是个很伟大的存在,我们人类用24进制来计算时间,用4进制来区分4季,用12进制来化分月份。我们用进制来了解时间的一切。

计算机中则用2进制,8进制和16进制来为我们服务。由于我们人类天生长着10个指头,10进制对我们来说是最佳的计算方式。为了与计算机能够相处愉快,计算机科学家研究出来进制的换算。

进制换算

10进制转2进制的方法为除2取余法

简单来说,就是一个数除以2,一直除到不能除为止,然后将余数倒着排列。

下面以25为例,25的二进制即为11001

25÷2=12 余数1

12÷2=6 余数0

6÷2=3 余数0

3÷2=1 余数1

1÷2=0 余数1

对我们来说,我们经常需要做的是将2进制转为其他进制。

2进制转其他进制的方法叫“按权展开法

有一个2进制:110100

2进制转8进制

将2进制每3个数分成一组。如下:

110

100

1*2^2+1*2^1+0*2^0

1*2^2+0*2^1+0*2^0

6

4

2进制转10进制

2进制转10进制有些许麻烦,2进制有多少个位。就要全部按权展开。

110100

1*2^5+1*2^4+0*2^3+1*2^2+0*2^1+0*2^0

将结果相加:52

2进制转16进制

2进制转16进制,每4个位为一组,不足的最前面补0。然后进行权展计算

字节很重要

*位(bit):二进制一个0或1就代表一个位。1010是4个位,1000 1010是8个位。

小知识:我们说的宽带100Mb中的b就是bit.

*字节(Byte):1字节 = 8个位。

字节是我们编程时经常要用到的概念,数据类型,内存管理都涉及到字节。一定要记清楚

小知识:硬盘2TB中的B指的就是Byte

字(word):字是由若干字节组成。一般一个字有4个字节。

原码、反码和补码

看了半天枯燥的内容了,再继续之前先来个美女调整一下大脑。

我们都知道计算机老外发明的,我们也都知道老外不会找零钱。找零钱的关键是什么?“减法”

由于老外不会找零钱,导致他们发明的计算机对减法运算也不在行。于是,聪明的老外就对计算机说:“不会减法可以,那咱们就来搞个加法吧”

于是53-53这个运算,就变成53+(-53)。

计算机又发愁了,那-53怎么表示呀?聪明的老外又想到新方法,并对计算机说:“你把这个数的二进制最前面那个位弄成符号位,0就是正的,1就是负的,这样-53就可以表示了”

计算机很开心的这样干了,这就是原码

53

0011 0101

-53

1011 0101

一串二进制码:

如果最高位是0,表示这个数是正数;

如果最高位是1,表示这个数是负数

计算机的噩梦并没有终止,因为它发现,53+(-53)结果依然不是0。于是它找到聪明的老外,并气呼呼的责问他:“你骗我,你说现在怎么办吧?”

老外不会找零钱,可是够聪明呀,于是他又对计算机说,那你把-53的二进制中,除了符号位,其他位置0变成1,1变成0。再试试

反码就这么被毫无责任的随便弄出来了。

-53原码

1011 0101

-53反码

1100 1010

正数的反码就是原码

负数的反码是除符号位之外,其他位取反。

天真的计算机对-53取反之后,发现又被骗了,这次它真的怒了!它杀到老外面前:“这次你不给我个说法,我今天就赖这儿了!!!”

聪明的老外,当然有他的办法,他对计算机说,你在反码的基础上+1试试。计算机吃过亏了,这次怒问:“你这方法靠谱么,不是随便胡弄我的吧?”

“绝对靠谱,不信你试试!”多么险恶的人呀,就这样把天真的计算机给哄回去了。

补码诞生了!

-53反码

1100 1010

-53补码

1100 1011

正数的补码就是原码

负数的补码是原码取反(变反码)之后,再加1

我们可爱的计算机,将53的二进制码和-53的补码进行计算,发现结果是正确的。

53

0011 0101

-53补码

1100 1011

结果

0000 0000

聪明的老外,看到天真的计算机开心的笑了,他知道成功了。然后他就跟计算机共同商定以下规则:

在计算机,都必须用补码进行运算。

正数的原码、反码和补码是一样。

负数的补码是原码取反之后,再加1得到的

不会找零的老外发明家和他的计算机的故事就此结束了。而他们的发明将会改变未来

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180421G0RFPR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券