C# 位运算基本大全
1.原码 反码 补码
只用补码进行计算,且没有减法。只有用补码进行加法运算,具体原因,详见:http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html
因为为了让计算机的电路基础设计简单,只有加法,选择使用符号位,再因为通过原码进行正树和负数进行运算,显然不能实现,所以,增加反码,补码。一切都是为了设计更加简单。
利用反码进行减法,只能部分计算没问题。对于+0,和-0分别是0000 0000,1000 000,于是补码的出现解决了0的符号问题。这样用 0000 0000表示0,就不会存在-0的问题。而且可以用1000 000 表示-128。
利用补码,不仅仅修复了0的符号以及两个编码的问题,还能够多表示一个最低数,这就是为什么8位二进制使用原码或反码的表示范围为【-127,+127】,而使用补码则是【-128,127】。
因为机器使用补码,所以对于编程中常用到的32位int类型,可以表示的范围是:【-2^31,2^31-1】因为第一位表示的是符号位。而使用补码表示时又可以多保存一个最小值。
2.位运算 换算
①位 b 也叫比特位,是计算机数据最小的单位,用二进制0和1来存储。
②字节 byte,1 byte = 8 b,一个字节=8位
③字符 char,1 char = 2byte=16b,1个字符 =2 个字节 = 16位
④KB,1KB = 1024byte
⑤汉字,1个汉字 = 2 个字节=16位。
3.位运算 逻辑运算
按位与 &
1&1=1
1&0=0
0&0=0
按位或 |
1|1=1
1|0=1
0|0=0
按位异或 ^ ,按照每一位进行异或,相同为0,不同为1
按位取反 ~
~1=0
~0=1
应用:
判断数的奇偶性:与1&,若结果为1,则为奇数,反之为偶数。
密码加密:两次异或同一个数之后结果不变,这个也可以用来在不会有溢出的风险下交换两个数的值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述