专业知识 | 程序猿的数学基础课 | 基础思想篇 | 1. 二进制

我的不幸恰恰在于我缺乏拒绝的能力,
我害怕一旦拒绝别人,便会在彼此心里留下永远无法愈合的裂痕!——《人间失格》

专业知识 | 程序猿的数学基础课 | 基础思想篇 | 1. 二进制

在这里插入图片描述

1.1 什么是二进制
1.1.1 进制的由来

公元 3 世纪左右,印度数学家(也有说法是阿拉伯人)发明了阿拉伯数字。阿拉伯数字由从 0 到 9 这样 10 个计数符号组成,并采取进位制法,高位在左,低位在右,从左往右书写。由于阿拉伯数字本身笔画简单,演算便利,因此它们逐渐在各国流行起来,成为世界通用的数字。
日常生活中, 我们广泛使用十进制计数法,也是基于阿拉伯数字的。

让我们来观察一个数字:2871

2871 = 2 * 1000 + 8 * 100 + 7 * 10 + 1
2871 = 2 * 10^3 + 8 * 10^2 + 7 * 10^1 + 1 * 10^0

其中 ^ 表示幂或次方运算。十进制的数位(千位、百位、十位等)全部都是 10^n 的形式。需要特别注意的是,任何非 0 数字的 0 次方均为 1。在这个新的表示式里,10 被称为十进制计数法的基数,也是十进制中“十”的由来。

1.1.2 二进制

明白了十进制,我们再试着用同样的思路来理解二进制,我们以数字110101为例。

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

十进制计数是使用 10 作为基数,那么二进制就是使用 2 作为基数,类比过来,二进制的数位就是 2^n 的形式。

1.2 计算机为什么使用二进制
1.2.1 计算机使用二进制与现代计算系统的硬件实现有关
  1. 组成计算机系统的逻辑电路通常只有两个状态,即开关的接通与断开。
  2. 断开的状态我们用“0”来表示,接通的状态用“1”来表示。由于每位数据只有断开与接通两种状态,所以即便系统受到一定程度的干扰时,它仍然能够可靠地分辨出数字是“0”还是“1”。因此,在具体的系统实现中,二进制的数据表达具有抗干扰能力强、可靠性高的优点。相比之下,如果用十进制设计具有 10 种状态的电路,情况就会非常复杂,判断状态的时候出错的几率就会大大提高。
1.2.2 二进制非常适合逻辑运算

逻辑运算中的“真”和“假”,正好与二进制的“0”和“1”两个数字相对应。逻辑运算中的加法(“或”运算)、乘法(“与”运算)以及否定(“非”运算)都可以通过“0”和“1”的加法、乘法和减法来实现。

1.3 二进制的位操作 (位运算)

位操作(位运算):就是直接对内存中的二进制位进行操作。

1.3.1 移位操作
1.3.2 逻辑操作
  • 按位与 “&”
  • 按位或 “|”
  • 按位取反
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值