首页 > 其他分享 >【基础知识】

【基础知识】

时间:2024-10-18 23:31:46浏览次数:6  
标签:0000 int 0101 基础知识 运算符 二进制 按位

位运算

位运算(\(Bitwise Operations\))是一种直接对二进制位进行操作的运算方式。在 \(C++\) 中,位运算符包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)。这些运算符在处理二进制数据时非常有用,尤其是在需要高效处理数据或进行底层操作时。

1. 左移运算符(<<

逻辑:左移运算符将一个数的二进制表示向左移动指定的位数,右侧用零填充。

语法

a << n
  • a 是要进行左移的数。
  • n 是要左移的位数。

示例

int a = 5;  // 二进制表示为 0000 0101
int b = a << 2;  // 左移2位,结果为 0001 0100,即十进制的 20

\(a << n\) 即为 \(a * (2^n)\)。

解释

  • 5 的二进制表示是 0000 0101
  • 左移2位后,变为 0001 0100,即十进制的 20

2. 右移运算符(>>

逻辑:右移运算符将一个数的二进制表示向右移动指定的位数,左侧用符号位填充(对于有符号数)或用零填充(对于无符号数)。

语法

a >> n
  • a 是要进行右移的数。
  • n 是要右移的位数。

示例

int a = 20;  // 二进制表示为 0001 0100
int b = a >> 2;  // 右移2位,结果为 0000 0101,即十进制的 5

\(a >> n\) 即为 \(a / (2^n)\)。

解释

  • 20 的二进制表示是 0001 0100
  • 右移2位后,变为 0000 0101,即十进制的 5

3. 其他位运算符

  • 按位与(&:对两个数的每一位进行与操作。

    int a = 5;  // 二进制表示为 0000 0101
    int b = 3;  // 二进制表示为 0000 0011
    int c = a & b;  // 结果为 0000 0001,即十进制的 1
    
  • 按位或(|:对两个数的每一位进行或操作。

    int a = 5;  // 二进制表示为 0000 0101
    int b = 3;  // 二进制表示为 0000 0011
    int c = a | b;  // 结果为 0000 0111,即十进制的 7
    
  • 按位异或(^:对两个数的每一位进行异或操作。

    int a = 5;  // 二进制表示为 0000 0101
    int b = 3;  // 二进制表示为 0000 0011
    int c = a ^ b;  // 结果为 0000 0110,即十进制的 6
    
  • 按位取反(~:对一个数的每一位进行取反操作。

    int a = 5;  // 二进制表示为 0000 0101
    int b = ~a;  // 结果为 1111 1010,即十进制的 -6(在补码表示中)
    

应用场景

位运算在以下场景中非常有用:

  • 位掩码:通过位运算来设置、清除或检查特定位。
  • 高效计算:通过位运算可以实现某些高效的操作,如快速乘以或除以2的幂。
  • 数据压缩:通过位运算可以实现数据的压缩和解压缩。
  • 加密算法:某些加密算法中会使用到位运算。

标签:0000,int,0101,基础知识,运算符,二进制,按位
From: https://www.cnblogs.com/To-Carpe-Diem/p/18475231

相关文章

  • k8s基础知识概览
    [top]k8s基础知识概览什么是k8s?Kubernetes|Kubernetes,alsoknownasK8s,isanopensourcesystemforautomatingdeployment,scaling,andmanagementofcontainerizedapplications.|Kubernetes也称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统......
  • Python基础知识总结
    变量#变量定义name="name"age=18height=1.75#多个变量赋值a=b=c=1print(a,b,c)字符串#字符串定义及输出str1="hello"str2='world'print(str1,str2)#字符串格式化输出print("name:%s,age:%d,height:%.2f"%(name,age,height))#字符串拼接str3=str1+str2pri......
  • JAVA基础知识补漏
    变量类型1.类变量:static2.实例变量:需要new3.局部变量:必须初始化常量final一般用大写表示命名规范所有变量、方法、类名:见名知意类成员变量:首字母小写和驼峰原则:monthSalary局部变量:首字母小写和驼峰原则常量:大写字母和下划线:MAX_VALUE类名:首字母大写和驼峰原则......
  • 期货交易基础知识考试题
    题库包含选择题40题、判断题41题。选择题:1.根据涨停板制度,期货合约在一个交易日中的交易价格波动(可以小于等于)规定的涨跌幅度。2.经营机构应当利用投资者评估数据库及交易行为记录等信息,持续跟踪和评估投资者风险承受能力,必要时调整期风险承受能力等级。经营机构调整投资者风险......
  • 新能源行业必会基础知识-----电力交易员职业标准-----持续更新
    新能源行业知识体系-------主目录-----持续更新https://blog.csdn.net/grd_java/article/details/140004020文章目录1.基本常识2.达到基本入行标准(四级/中级)2.1交易资质及信息管理2.2中长期交易2.3现货交易2.4辅助服务管理2.5售电管理2.6电价分析与结算2.7市场......
  • JAVA基础知识点
    C/C++速度快JAVA大型web开发,手机端安卓(JAVA是HTML的扩展)C# 中小型Web,桌面程序开发SHELL,VB操作指令Python数字处理,中小型网站PHP中小型网站Arrays.toString(args)对于importjava.util具有依赖作用JAVA特点:1)简单性//语法相较C更简易2)面向对象 3)分......
  • (接上篇问题回答)OWASP Top 10 漏洞详解:基础知识、面试常问问题与实际应用
    1.SQL注入面试常见问题什么是SQL注入? SQL注入是一种网络安全漏洞,攻击者通过向SQL查询插入恶意代码,来干扰应用程序的数据库查询,导致未授权的数据访问或数据操纵。如何防止SQL注入? 防止SQL注入的方法包括:使用预编译的SQL语句(PreparedStatements)。使用ORM工具。严格验证和......
  • 数据库基础知识
    数据库范式1NF:属性不可再分割,字段只能是一个值,不能再分为多个其他字段。2NF:非主键字段之间不能存在依赖关系,必须完全依赖于主键。3NF:所有非主键字段必须直接依赖于主键,不能存在传递依赖。【注意】阿里巴巴开发手册这样说到:不得使用外键与级联,一切外键概念必须在应用层解......
  • 第1节 计算机基础知识
    如何测试:1.需求测试,2.界面测试3.功能测试4.可靠性测试5.可移植性测试6.兼容性测试7.易用性测试8.安全性测试9.性能角度购物车:1.需求说明书2.界面排版(网格、卷轴)、按键图标大小颜色,3.功能测试添加、删除、结算,进入店铺4.可靠性各种网络条件和温度的影响5.可移植性......
  • java多线程基础知识速通
     1.线程和进程的区别进程是正在运行的程序实例,每个进程包含了多个线程,每个现场执行不同的任务进程都有自己的内存空间,而一个进程下的线程们则是共享内存空间线程更加轻量,线程上下文切换的成本远低于进程上下文切换的成本 2.并行与并发的区别并行是多核CPU一般执行相应个......