有一种爱情是逢二便可进位的二进制哦。
美美的七夕节
首先祝友友们节日快乐呀!!!
缘分,就是一个奇数,等待另一个奇数,来组成一个偶数。七夕佳节,愿还是奇数的你,早日脱单;已是偶数的你,幸福甜蜜!
七夕节,又称七巧节、七姐节、女儿节、乞巧节、七娘会、七夕祭、牛公牛婆日、巧夕等,是中国民间的传统节日。七夕节由星宿崇拜衍化而来,为传统意义上的七姐诞,因拜祭“七姐”活动在七月七晩上举行,故名“七夕”。拜七姐,祈福许愿、乞求巧艺、坐看牵牛织女星、祈祷姻缘、储七夕水等,是七夕的传统习俗。经历史发展,七夕被赋予了“牛郎织女”的美丽爱情传说,使其成为了象征爱情的节日,从而被认为是中国最具浪漫色彩的传统节日,在当代更是产生了“中国情人节”的文化含义。
不过,在美美的七夕节这几天里,我想还有着不少友友在和我一样,还在老老实实搬砖吧。
不过,有关系嘛,
没有关系。
可是......
今天学的东西也好甜呀。
期待的二进制来了
最早的编程语言是二进制语言,也是计算机能够直接识别的唯一语言。不管用什么高级语言编写的程序最后都要转换为二进制语言,才能在计算机上执行。
计算机只认识二进制哦。
二进制(binary),发现者莱布尼茨,是在数学和数字电路中以 2 为基数的记数系统,是以 2 为基数代表系统的二进位制。这一系统中,通常用两个不同的符号 0(代表零)和 1(代表一)来表示。
十进制是组成以 10 为基础的数字系统,有 0,1,2,3, 4, 5, 6, 7, 8, 9 十个基本数字组成。
十六进制(简写为 hex 或下标 16)是一种基数为 16 的计数系统,是一种逢 16 进 1 的进位制。通常用数字 0、1、2、3、4、5、6、7、8、9 和字母 A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F 表示 10~15,这些称作十六进制数字。
大家可能会有疑惑,二进制?就是那一串 01101010......的数字嘛,可是我们在计算机中也很少见呀。
的确,一般我们在计算机中看到的采用的都是 10 进制,16 进制等
2 进制 10 进制 16 进制
逢二进一 逢十进一 逢十六进一
数字: 01 数字: 0123456789 数字: 0123456789ABCDEF
权: ......8 4 2 1 权: ...... 1000 100 10 1 权: ........16 1
基数 2 基数 10 基数:16
看到 10 进制大家是不是就很熟悉了。再来看一下他们的对应形式
2 进制转换为 10 进制:将一个 2 进制数每个 1 位置的权值累加即可
例:
11010101(2)-------213(10)
128+64+16+4+1 = 213
10 进制转 2 进制:“除以 2 取余,逆序排列”(除二取余法)
在这里,大家还可以使用相减权的方法来进行转换。
例
128 64 32 16 8 4 2 1 (10)
1 1 0 0 0 1 0 0 (2)
68 4 0
196(10)= 11000100(2)
2 进制转换为 16 进制:可以把二进制数每四位数分为一段,每一段用一个十六进制数来表示。
例
0101 1111(2)----64+16+8+4+2+1=95
5f(16)----------------5*16+15=95
在计算机采用 16 进制就是用于简写 2 进制(缩写 2 进制),因为 2 进制的书写过于冗长,而 2 进制的每 4 位对应一个 16 进制。
计算机中使用的都是二进制,八进制和十六进制的出现其实都不是计算机的需要,它们的出现完全是出于表达和识别的方便性考虑的。
一个较大的数用二进制表示就太长了,比如一个 int 类型的 100(4 个字节,总共 32 位),用二进制表示就是 0000 0000 0000 0000 0000 0000 0110 0100,这还是一个比较小的数,如果更大,将会更复杂,写这么长,确实有些不便,于是,就出现了更简易的八进制,十进制,十六进制,数制越大,表示一个数所需的数码位数就越少,所以 C 和 C++代码中不能直接输入二进制,但是允许输入八进制、十进制、十六进制。
那为什么没有出现什么七进制,九进制呢?因为 8,16 分别是 2 的 3 次方、4 次方。使得这 3 种进制之间转换起来很方便。
八进制、十六进制即缩短了数的表示位数,同时保持了二进制数的表达特点。
-----引用自王达老师《深入理解计算机网络》
说到这里就不得不提一下补码,取反的相关知识。。
补码
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。
补码的规律:
1. 0 是 0000 0000 0000 0000 0000 0000 0000 0000
2. -1 是 1111 1111 1111 1111 1111 1111 1111 1111
3.max 是 0111 1111 1111 1111 1111 1111 1111 1111
4.min 是 1000 0000 0000 0000 0000 0000 0000 0000
在这里以 4 位 2 进制为例讲解补码的编码规则:
(1)计算的时候如果超出 4 位数,就自动溢出舍弃,保持 4 位数不变。
(2)将 4 位 2 进制数分一半作为使用负数使用,0 在计算机中作为正数。
(3)最高位称为符号位,高位为 0 是正数,高位为 1 是负数。
补码对称现象
公式:-n=~n+1 一个数的补码=这个数取反+1(取反(二进制数 0 变 1,1 变 0))
(正负都有效,除了最小值,最小值还是他本身)
例
神秘的运算符
二进制中包含了 &,| ,>>>,<<, ~等多种运算符。
与运算:&
逻辑乘法
1&1=1;0&1=0;1&0=0;0&0=0;
计算规则
两个数上下对齐,对齐位数进行与运算。
经典应用
掩码(mask)运算(截取一个数的后 8 位)
或运算:|
两者都为 0 为 0,否则为 1
1 | 1 = 1, 1 | 0= 1, 0 | 1 = 1, 0 | 0 = 0
经典应用
可以将将字节数据合并
右移位运算符:>>>
运算规则 将数字向右移动,高位补充 0,低位溢出舍弃
>>>向右移动,高位永远补 0;
>>数位向右移动,高位为 1(负数)则补 1;高位为 0(正数)则补 0,保持符号位不变,其结果符合数学除法规律(自动向小方向取整)
左移位运算符:<<
将数字向左移动,低位补充为 0,高位溢出舍弃。
非运算:~
1 取 0 0 取 1
~1 = 0 ~ 0 = 1
~(1001) = 0110
小彩蛋
看到文章这里,是不是对于二进制已经有了不错的理解了,而且不知道你有没有发现不论在哪种情况下,1 和 0 这一对就从未分开过,属实甜到了。而且在“二进制”的爱情中,他们的感情只有 0 和 1,也就是只有双方哦。看到这,你是不是也羡慕了呢。在这里也祝友友们早点拥有自己的二进制爱情哦。
版权声明: 本文为 InfoQ 作者【ioik】的原创文章。
原文链接:【http://xie.infoq.cn/article/37d566791373b51cda546d688】。文章转载请联系作者。
评论