将不确定变为确定~一切归总为“二”(C#中的位运算有啥用)

简介:

本文中的“二”,指的是二进制,即看见2就进一,也叫逢二进一,它是最为简单和清晰的数据,在现实生活中,人们用的最多的就是十进制数据,即逢十进一,看一下例子:

二进制: 十进制

0                         0

01 01

10 02

11 03

100 04

看到了吧,在二进制中,不会出现比1大的数,除了0就是1,而在十进制中,不会出现10,它由0~9这10个数字组成。

在我们的C#中,位运算分为左位移和右位移,分别用<<和>>表示,左移相当于向左移位,右面补0,例如:

10 << 1  它的含义是10 0,它最后的结果就是100,相当于10进制的4,这时我们难看出左移1位,相当于乘2操作,返之还有右移,例如:

100 >> 1 它的结果就是010,它在左面进行补0,右移后相当于除2操作

通过这个特性,我们在设计具有位去处的Flags特性枚举时,可以这样来做了

image 

我们将它的值输出看一下吧

image

结果如下:

image

总结:事实上,在无论是十进制还是十六进制或八制的位运算,计算器都会它将转换成二进制,然后再进行位移的计算。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:将不确定变为确定~一切归总为“二”(C#中的位运算有啥用),如需转载请自行联系原博主。

目录
相关文章
|
7天前
|
算法 测试技术 C++
【位运算 反证法 试填法】2897.对数组执行操作使平方和最大
【位运算 反证法 试填法】2897.对数组执行操作使平方和最大
【位运算 反证法 试填法】2897.对数组执行操作使平方和最大
|
20天前
|
机器学习/深度学习 存储 算法
位运算是一种什么运算方式
位运算是一种什么运算方式
17 1
|
3月前
|
算法 测试技术 C++
【数论】【分类讨论】【C++算法】1611使整数变为 0 的最少操作次数
【数论】【分类讨论】【C++算法】1611使整数变为 0 的最少操作次数
|
10月前
位运算判断奇数or偶数
位运算判断奇数or偶数
面试官:判断一个数是否为2的整数次幂
面试官:判断一个数是否为2的整数次幂
求数组中只出现一次的数---异或操作
求数组中只出现一次的数---异或操作
43 0
【每日一题Day41】生成交替二进制字符串的最小操作数 | 模拟 位运算
思路:长度一定的交替二进制字符串有两种可能性,以字符0开头的0101字符串和以字符1开头的1010字符串,因此只需要将字符串s与这两种字符串进行比较,记录不相同的字符个数,最后返回较小值即可
65 0
【每日一题Day41】生成交替二进制字符串的最小操作数 | 模拟 位运算
|
编译器 API C语言
力扣面试题17.04 - 消失的数字【求和相减 + 异或位运算 + 哈希表】
三种方法巧解力扣面试题17.04 - 消失的数字,你值得拥有
110 0
力扣面试题17.04 - 消失的数字【求和相减 + 异或位运算 + 哈希表】
2.2.4加减运算和溢出判断
2.2.4加减运算和溢出判断
|
存储
用补码计算x+y,并判断结果是否溢出问题
浮点数的加减法与是否溢出的判断,是计算机组成原理中的数据存储的一个入门。至于溢出情况,如果01就是正溢出,00,11未溢出,10负溢出。
402 0
用补码计算x+y,并判断结果是否溢出问题