位运算(1)——初识位运算
前段时间数电课学了些进制转换,还有与或非等逻辑运算,如今再来看看位运算,倒轻松了不少。
很早就想写些非总结性博客了,奈何还是太懒。也也不知怎的突然又来了兴致,赶忙写下这篇博客。
废话不多说,今天准备总结总结关于位运算的知识。
什么是位运算
程序中的所有数在计算机内存中都是以二进制的形式存储的,即0、1两种状态,而位运算就是直接对整数在内存中的二进制位进行操作。
进制转换
- 十进制转二进制
方法:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。例如: - 二进制转十进制
方法:把二进制数按权展开、相加即得十进制数。例如: - 二进制与八进制间的转换
- 二进制与十六进制之间的转换
运算
- 与 &
该运算通常用于二进制的取位操作。例如一个数and 1 的结果就是取二进制的最末位,由此可以判断一个整数的奇偶,二进制数的最末位为0表示该数为偶数,最末位为1表示该数为奇数。
相同位的两个数字都为1,则为1;若有一个不为1,则为0。
例:1111 1100 & 0011 1111 =>0011 1100 - 或 |
一个数or 1的结果就是把二进制数的最末位强行变成1,如果需要将其变成0,只需在or1后再减去1就ok。
相同位只要有一个为1即为1。
例如:1011 0010 | 0101 1110 => 1111 1110 - 异或^
其逆运算是它本身,即两次异或同一个数最后结果不变。
相同位不同则为1,相同位相同位则为0。
例:0001 0100 ^ 0000 0101 => 0001 0001
下面是在网上所见的相关规律讲解图: - 非(取反) ~
将0和1全部取反。
例如:~0000 1111 => 1111 0000 - 按位左移 << 按位右移 >>
将二进制数进行左移或右移操作。 - 无符号右移 >>>
忽略符号位,空位都以0补齐。
没有 <<<
以上为本次总结,后续博客将根据我所看的视频,总结位运算的几种题。