前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序员的数学基础课(二)二进制的操作

程序员的数学基础课(二)二进制的操作

作者头像
zhaozhen
发布2021-07-15 10:36:18
5190
发布2021-07-15 10:36:18
举报

1.how&why 为什么计算机需要二进制?

计算机使用二进制和现代计算机系统的硬件实现有关。组成计算机系统的逻辑电路通常只有两个状态,即开关的接通与断开。

断开的状态我们用“0”来表示,接通的状态用“1”来表示。由于每位数据只有断开与接通两种状态,所以即便系统受到一定程度的干扰时,它仍然能够可靠地分辨出数字是“0”还是“1”。因此,在具体的系统实现中,二进制的数据表达具有抗干扰能力强、可靠性高的优点。

相比之下,如果用十进制设计具有 10 种状态的电路,情况就会非常复杂,判断状态的时候出错的几率就会大大提高。

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

2. 二进制的操作

二进制的与电路中的与非门有一定联系,主要有以下几种位运算, 左移动,右移动(逻辑右移动、 算数右移动)、或运算、 与运算、 异或运算。

操作符号解释如下表:

运算符

名称

描述

&

AND

如果两位都是 1 则设置每位为 1

|

OR

如果两位之一为 1 则设置每位为 1

^

XOR

如果两位只有一位为 1 则设置每位为 1

~

NOT

反转所有位

<<

零填充左位移

通过从右推入零向左位移,并使最左边的位脱落。

>>

有符号右位移

通过从左推入最左位的拷贝来向右位移,并使最右边的位脱落。

>>>

零填充右位移

通过从左推入零来向右位移,并使最右边的位脱落。

实例

操作

结果

等同于

结果

5 & 1

1

0101 & 0001

1

5 | 1

5

0101 | 0001

101

5 ^ 1

4

0101 ^ 0001

100

~ 5

10

~0101

1010

5 << 1

10

0101 << 1

1010

5 >> 1

2

0101 >> 1

10

5 >>> 1

2

0101 >>> 1

10

ps: 在java 的二进制中首位字符表示的是一个符号位,来表示整数or 负数,所以在右位移操作时存在一个有符号位移操作。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微瞰技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档