C# 位移运算

一:“<<”和“>>”运算符用于执行移位运算,分别称为左移位运算符和右移位运算符。对于X<<N和X>>N形式的运算,含义是将X向左或向右移动N位,得到的结果的类型与X相同。此处,X的类型只能是int,uint、long或ulong,N的类型只能是int,N的类型只能是int,或者显示转换为这些类型之一,否则变异程序时会出现错误。位移可以简单的理解为参数与2的幂进行运算

二:向左位移"<<",向左位移相当于进行乘法运算

向左位移,相当于当前参数乘以2的位移次方

3<<1   等于 3*(2的一次方) 等于 3*2
3<<2   等于 3*(2的2次方)  等于 3*4
3<<3   等于 3*(2的3次方)  等于 3*8
3<<4   等于 3*(2的4次方)  等于 3*16

三:向右位移">>",向右位移相当于进行除法运算表

向左位移,相当于当前参数乘以2的位移次方

16>>1   等于 16/(2的一次方) 等于 16/2
16>>2   等于 16/(2的2次方)  等于 16/4
16>>3   等于 16/(2的3次方)  等于 16/8
16>>4   等于 16/(2的4次方)  等于 16/16
时间: 2024-08-25 14:39:16

C# 位移运算的相关文章

SQL位移运算函数

-- ============================================= -- Author:      <maco_wang> -- Create date: <2011-03-22> -- Description: <SQL位移运算函数> -- ============================================= Go --创建函数 create function displacement(@n as bigint,@m

逻辑运算与位移运算

异或运算 True ⊕ False = True False ⊕ True = True False ⊕ False = False True ⊕ True = False 同或运算 True ⊙ False = False False ⊙ True = False False ⊙ False = Ture True ⊙ True = Ture 或运算 True  || False = True False || True = True False || False = False True  

1&lt;&lt;30 hashMap 中使用位移运算的意义

static final int MAXIMUM_CAPACITY = 1 << 30; 计算过程已1<<30为例,首先把1转为二进制数字 0000 0000 0000 0000 0000 0000 0000 0001 然后将上面的二进制数字向左移动30位后面补0得到 01000000 00000000 00000000 00000000(共计32位,是int的最大长度,第一位标示的是符号)即0x4000 0000 java语言要2的n次方咋写呀 Math.pow(2,n). 这里

Java位移运算

位移运算符用来将操作数向某个方向(向左或者右)移动指定的二进制位数.在Java中,位移运算分为左位移和右位移,符号为<<和>>. 左位移运算符 左位移的符号是<<,其运算规则是:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零. 例如,将整数 11 向左位移 1 位的过程如图所示: 从图中可以看到,原来数的所有二进制位都向左移动 1 位.原来位于左边的最高位 0 被移出舍弃,再向尾部追加 0 补位.最终到的结果是 22,相当于原来数的 2 倍

在枚举中使用位移运算,来判断层叠块

如:k1=2 ; //添加 k2=4 ; //删除 k3=8; //修改 purview = k2|k3; // 赋给添加和删除权限 解释: 第一,2的8位二进制值为00000010 4的8位二进制值为00000100 8的8位二进制值为00001000 第二,当对8和4进行按位或(|)操作后,结果为: 4|8 = 12 00000100 |00001000 = 00001100 为什么会是这样呢?在进行按位或操作时 00000001|00000001=00000001 ; 00000001|0

Java 中的位移运算

位移运算符就是在二进制的基础上对数字进行平移.按照平移的方向和填充数字的规则分为三种:<<(左移).>>(带符号右移)和>>>(无符号右移). 计算规则如下: ①左移n位相当于乘以2的n次方. ②右移n位相当于除以2的n次方.这里是取商哈,余数就不要了. ③ >>>(无符号右移) 运算规则: 按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零.对于正数来说和带符号右移相同,对于负数来说不同. 其他结构和>>相似

jdk 数组位移运算

1.采用先shift=31-Integer.numberOfLeadingZeros(scale);取int前面的补零个数31再减去拿到占得内存位长度 2.i偏移shift(其实等于I*位数) 加上base位数.等于用户取的位数 因为之前总是看了有点误解今天下午又看到再次记录下以备后面复习

java java.lang.Long详解之三 大显神通的位移运算(转)

http://blog.csdn.net/songylwq/article/details/9015581 http://www.congmo.net/blog/2012/03/11/Long-ByteShifting/

状态压缩DP常遇到的位运算

位操作一共有6种形式:<<,>>,&,|,^,~; 1.左移操作符<<:左移操作符将整数的二进制向左移若干位,将最高若干位挤掉,并在低位补0 如: int a=3; //a=000000000000000000000000000000011=3 int b=a<<1; //b=000000000000000000000000000000110=6 int c=a<<3; //c=000000000000000000000000000001