位运算案例

###概述:

在二进制计算中,最常见的就是位运算了。而位运算也经常出现在各位大神的源码当中,在研读了snowflake算法以后。
决定自发的研究一些位运算,以应用到实际程序中。欢迎大家在评论区追加运算的应用场景,或者算法中实际应用到的位运算
本篇持续更新!!

###基本运算,定死一个值为MAX(8位DEMO):
最大值: 1111 1111 最小值 0000 0000
设X = MAX , Y < X 则有下列规律可言

与运算:(同时为1则结果为1,有一个不为1则结果为0)

1111 1111 & Y = Y
当Y>X的时候,Y&X = RES, RES小于Y和X的最小值。

或运算:(有一个为1,则结果为1)

1111 1111 | Y = 1111 1111

异或运算:(相同为0,不同为1)

1111 1111 ^ Y = ~ Y (非运算)

非运算结合与运算

~X & X = 同等位数最小值

非运算结合或运算

~X | X = 同等位数最大值

非运算结合异或运算(和非运算结合或运算具有同等效应)

~X ^ X = 同等位数最大值

###左移表示MAX
有X位二进制数,则最大的表示算法用位运算为

MAX = (1 << X) - 1
MAX = (-1 << X) ^ -1

以上这种写法,第二种计算更精,因为逻辑运算符,位运算符要高于算数运算符,
在计算机中,负数是以补码的形式存在的哦,可以尝试一下,很有意思

###原码,反码,补码|以1为值,8位二进制数举例

原码为直接转换: 0000 0001
反码为原码的转换,1为0,0为1: 1111 1110
补码为反码+1,结果为: 1111 1111

###未完待续…
-进制转换
-进制为底数,所在位置为幂次方,以我们常用的十进制相加的和为任何进制与十进制的转换

9999 = 9x10的0次方+9X10的1次方+N = 十进制数
-snowflake算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值