深入理解位操作( 一)

简介: 深入理解位操作( 一)

位操作介绍

位操作主要有与、或、非和异或,下面将介绍各种位操作的基本用法。

 

0 & 1 = 0

1 & 0 = 0

0 & 0 = 0

1 & 1 = 1

 

0 | 1 = 1

1 | 0 = 1

0 | 0 = 0

1 | 1 = 1

 

0 = 1

1 = 0

 

异或

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0

1 ^ 1 = 0


位操作性质

上面这些知识应该是大家都已经了解的,那么接下来便问大家这些操作到底有什么作用?难道仅仅是为了做一些简单的位运算?

 

答案显然不是,熟练的运用这些操作,可以为你解决很多复杂的问题。

(1) 与操作其实就是get操作,即获得任意位的值。

给定任意的二进制数01010111,我想获得第4,5,6位的值,该如何操作呢?

   0101 0111

& 0011 1000

------------------

   0001 0000

 

(2) 或操作其实就是set操作,即设置任意位的值。

给定任意的二进制数01010111,我想把第4,5,6位设置为1

   0101 0111

|  0011 1000

------------------

   0111 1111

 

(3) 异或操作其实就是取反操作,即把任意位的0变成11变成0

给定任意的二进制数01010111,我想把第4,5,6三位由0变成1,由1变成0

   0101 0111

^  0011 1000

------------------

   0110 1111

 

思考

从上面可以看到,二进制都是由0和1组成的,因此在编写的时候,01数字较多不细心的话十分容易写错。有没有更加简洁的写法呢?


答案是有的,那就是采用八进制、十进制或十六进制。

八进制            0123    0开头

十进制            123

十六进制        0x123  0x开头

 

给定任意的一个整数1379,要get它的第358位,应该如何去做呢?

(1) 将一个字节的358三位设置为11001 0100;

(2) 将二进制转换为十六进制即0x54;

(3) 利用熟悉的语言就可以直接编写代码1379 & 0x54进行计算就可以得到结果。


利用十六进制就可以非常方便的编写代码,得到结果。


结语

本文主要介绍了位操作的定义,基本性质和一些基本应用,帮助大家更好的理解二进制。另外为了方便大家更好的记忆,简单归纳总结为如下:

= get

= set

异或 = 取反

目录
相关文章
|
5月前
|
C语言
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换(C语言)
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换(C语言)
38 0
|
4月前
|
存储 C#
C# 逻辑位运符及运算原理 按位操作二进制
C# 逻辑位运符及运算原理 按位操作二进制
|
2月前
|
C语言
C语言自增减、逻辑运算、位运算、位移运算及三目运算操作
C语言自增减、逻辑运算、位运算、位移运算及三目运算操作
17 0
|
5月前
位操作(异或骚操作)
位操作(异或骚操作)
25 0
|
8月前
|
算法 Python
如何将算法翻译成RTL(四)有符号数的加减法实现
如何将算法翻译成RTL(四)有符号数的加减法实现
98 0
|
编译器
C位操作
C位操作
125 0
C位操作
|
C语言
【C语言】写一个宏实现将一个整数的二进制的奇数位和偶数位交换
【C语言】写一个宏实现将一个整数的二进制的奇数位和偶数位交换
79 0
【C语言】写一个宏实现将一个整数的二进制的奇数位和偶数位交换
|
人工智能 BI
第三次笔记:算术逻辑单元 电路基本原理 加法器的设计 一位全加器 串行进位加法器 并行进位加法器 补码加减运算器 无符号整数加减法 标志位的生成
第三次笔记:算术逻辑单元 电路基本原理 加法器的设计 一位全加器 串行进位加法器 并行进位加法器 补码加减运算器 无符号整数加减法 标志位的生成
306 0
第三次笔记:算术逻辑单元 电路基本原理 加法器的设计 一位全加器 串行进位加法器 并行进位加法器 补码加减运算器 无符号整数加减法 标志位的生成
|
存储 Web App开发 算法
二进制究竟有什么用?齐姐带你看看那些好玩儿的「位操作」
本篇终于讲到了齐姐文章里常常出现的分割线! 计算机说到底就是 0 和 1,所有的数在内存中都是以二进制的形式储存的。 而位操作,或者说位运算,就是直接对内存中的二进制位进行操作。 位运算可以说是我们的基本功,今天这篇文章就从以下角度和大家一起玩转位运算。
131 0
二进制究竟有什么用?齐姐带你看看那些好玩儿的「位操作」