美文网首页
关于位运算

关于位运算

作者: leeleeleelalala | 来源:发表于2020-02-28 23:30 被阅读0次

进制

所谓进制,就是满几进1的制度,生活中我们不知不觉已经用了很多,12个为一打,这是满12进1;三个月为1季度,这是满3进1。
在搬砖生涯中,我们碰到更多的是二进制,八进制,十进制,以及十六进制。
计算机底层的电子元件只有两种状态,高电平(有电)和低电平(没电),高电平的时候为1,低电平的时候为0,于是二进制应运而生。
那么为啥又有八进制和十六进制呢,因为相比二进制,表示相同的数值时,他们要更短一些,方便阅读和记忆。

计算机中存储单位的换算

8bit = 1byte
1kb = 1024byte
1mb = 1024kb
...
bit是计算机中最小的信号单位,只能表示两种状态,范围太小了,英文字母就有26个,还有其他字符,远远不够
于是就有了byte,它可以表示2的8次方256种,我们所熟知的ASCII码就占一个byte

正码反码补码,草泥..sorry

计算机中所有的有符号数字都是按照补码的形式存储的

1、 正数的原码 = 反码 = 补码
2、 负数呢
       原码 = 符号位 + 数值位(数据的绝对值的32位二进制表示)
       反码 = 符号位不变 + 数值位取反(0->1,1->0)
       补码 = 反码 + 1

让你惊艳的位运算

首先要知道,位运算在计算机里面全部都是用数值的补码进行运算的,运算完之后呈现给我们的是原码

1、按位与&  :都为1才为1
2、按位或|  :有一个1就为1
3、按位异或 ^  :不同才为1
4、按位取反 ~  : 规则见上文反码描述,注意正数的原码反码补码都是它自己
5、左移<<  : 数值x左移n位 = x * 2^n
6、右移>>  : 数值x右移n位 = x / 2^n  (符号位是什么就用什么补充)
7、无符号右移>>>  : 左边空出来的用0补充,于是无符号右移之后,正数还是那个正数,负数就偷偷变了性,成正数了。

为什么要BB这么多?
因为最近疏于学习
没有素材
em...
才不是
位运算的作用老大了,运算效率还特别高,之前研读JDK源码的时候,发现底层很多算法都用到了位运算,特别巧妙和惊艳。

位运算的应用

第一个例子:
利用 a ^ b ^ b == a 的特性,可实现
1、以b作为密钥的简单加密
2、在不利用中间变量的情况下实现两个变量的交换

a = a ^ b
b = a ^ b
a = a ^ b
😊

第二个例子:
利用 x ^ (x - 1),可实现
1、判断一个数x是否是2的整数次幂
利用 res = x & (x-1), res为0 则x是2的整数次幂,否则不是
这是为喵?
试想一下,2的n次幂的二进制表示大概是怎样?是酱:
0000010000,从右向左第(n+1)个位置为1,其他位置都是0
那么,一个(2的n次幂)-1的数的二进制表示又是怎样? 是酱:
0000001111,从右向左第n个位置为1,然后前面0到(n-1)位置是0,n往后都是1
所以如果x是2的整数次幂 是 x & (x-1)=0的充分条件,必要条件也是可以利用上面的思路得证的。

2、判断一个二进制数中有多少个1
要不要自己证明一下?😊

还有很多很多,以后我也会多多学习。

相关文章

  • 关于位运算

    进制 所谓进制,就是满几进1的制度,生活中我们不知不觉已经用了很多,12个为一打,这是满12进1;三个月为1季度,...

  • 关于进制与位运算

    关于位运算参考文章:http://blog.csdn.net/iukey/article/details/7195265

  • 3、小众运算符の大课堂(一)

    较为简单の位运算符: & 位与运算| 位或运算^ 位异或运算~ 位取反运算 举例: 要做位运算,首先要把数据转...

  • 关于运算符--位运算符

    这里我先主要讲解位运算符。至于逻辑,关系,算术运算符相对简单,这里就不做赘述。 一.& | 和 ^ --需要将10...

  • 位运算及其应用

    内容概要: 位运算基本操作 基于位运算的状态压缩 位运算经典应用 位运算解N皇后问题 位运算 符号描述规则&与1&...

  • 位运算及用位运算实现权限控制

    请自行补习位运算相关知识 位运算 位运算示例 权限控制

  • 开发基础随笔之位运算符(Bitwise Operators)

    位运算符,属于算术运算符 按位逻辑运算符: 位移运算符: 位运算符的运算数只能是整数 位移运算符:按位左移 a<<...

  • 强大的位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作位取反运算符.png 位与运算符 位与运算符(&)可以...

  • 位运算

    位运算 1. &:按位与 规律:一假则假任何位上的数和1相&得到的结果还是那个数 2. |:按位或 规律:一真则真...

  • 位运算

    https://leetcode.com/problems/gray-code/description/这个位运算...

网友评论

      本文标题:关于位运算

      本文链接:https://www.haomeiwen.com/subject/adhdhhtx.html