位运算及A+B

简介: 位运算及A+B

位是数据存储的最小单位,在计算机中的二进制系统,每个0或者1就是一个位(bit)

位操作

1.&(按位与) ----> 真真为真

2.|(按位或) ----> 假假为假

3.^(按位异或) —> 不同为真,相同为假

4.~(按位取反) —> 0为1,1为0

5.>>(按位右移) —> 把二进制位整体右移 —— 右移等于除了2的N次方,N是右移的位数

6.<<(按位左移) —> 把二进制位整体左移 —— 左移等于乘了2的N次方,N是左移的位数

A+B

分析:

确定需要进位
    1+1 = 2
    A:0000 0001
    B:0000 0001
    C:0000 0010
  A&B:0000 0001,当A和B某一位相同时(都是1),那么下次计算需要进位  
• 1
• 2
• 3
• 4
• 5
• 6
确定不需要进位
  1+2 = 3
  A:0000 0001
  B:0000 0010
  C:0000 0011
  A&B:0000 0000 == 0,即当A&B == 0时,不需要进位
• 1
• 2
• 3
• 4
• 5
• 6
不需要进位的时候,如何得到结果?
  1+2 = 3
  A:0000 0001
  B:0000 0010
使用A&B:0000 0000确定不需要进位,
当某一位是1的时候,需要保存下来,则使用^(按位异或)
  A^B:0000 0011 == 3
此时得到想要的结果
• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
需要进位的时候,如何得到结果?
  1+3 = 4
  A:0000 0001
  B:0000 0011
  C:0000 0100
使用A&B:0000 0001的知,最后一位需要进位
使用<<(按位左移)得到一个进位后的C ———— (A&B)<<1 : 0000 0010
使用^(按位异或)得到原值不需要进位的部分D ———— (A^B) : 0000 0010
此时,将C与D重复上述操作
直到,&(按位与)的结果是0 ,说明没有进位了,也说明计算结束了
• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11
• 12

代码实现

#include <iostream>
using namespace std;
int main()
{
    int A,B;
    while(cin>>A&&cin>>B)
    {
        int flag1 = A&B;
        int flag2 = A^B;
        while(flag1 > 0)
        {
          int C = flag1<<1;
        int D = flag2;
            flag1 = C&D;
            flag2 = C^D;
        }
     cout << flag2 << endl;
    }
    return 0;
}
相关文章
|
算法 安全 C++
【C++ 泛型编程 入门篇】深入探索C++的numeric_limits:全面理解数值界限(一)
【C++ 泛型编程 入门篇】深入探索C++的numeric_limits:全面理解数值界限
591 0
|
数据可视化
ShapeNet数据集及dataset代码分析
ShapeNet数据集及dataset代码分析
1291 0
|
NoSQL Java Redis
Redis6入门到实战------ 八、Redis与Spring Boot整合
这篇文章详细介绍了如何在Spring Boot项目中整合Redis,包括在`pom.xml`中添加依赖、配置`application.properties`文件、创建配置类以及编写测试类来验证Redis的连接和基本操作。
Redis6入门到实战------ 八、Redis与Spring Boot整合
|
8月前
|
运维 安全 BI
中小企业如何选购访客管理系统?
还在用传统方式登记访客信息?草料二维码提供免费高效的访客登记管理系统,扫码登记、数据统计、安全保障,1天即可上线,提升企业形象和管理效率!
|
12月前
|
安全 新能源 知识图谱
固态电池:电动汽车的能源革新
【10月更文挑战第15天】固态电池凭借其高能量密度、长续航、卓越安全性和快速充电等优势,正引领新能源汽车领域的技术革命。本文详细探讨了固态电池的技术特点、优势及其对电动汽车产业的影响,展示了其在提升续航里程、增强安全性和降低成本方面的巨大潜力。随着技术的不断进步和成本的降低,固态电池有望成为推动电动汽车行业发展的关键力量,开启一个更加绿色高效的交通新时代。
|
Java API 数据库
【神操作!】Spring Boot打造RESTful API:从零到英雄,只需这几步,让你的Web应用瞬间飞起来!
【8月更文挑战第12天】构建RESTful API是现代Web开发的关键技术之一。Spring Boot因其实现简便且功能强大而深受开发者喜爱。本文以在线图书管理系统为例,展示了如何利用Spring Boot快速构建RESTful API。从项目初始化、实体定义到业务逻辑处理和服务接口实现,一步步引导读者完成API的搭建。通过集成JPA进行数据库操作,以及使用控制器类暴露HTTP端点,最终实现了书籍信息的增删查改功能。此过程不仅高效直观,而且易于维护和扩展。
236 1
|
C++ 容器
【C++STL基础入门】list交换、翻转,排序、合并和拼接操作
【C++STL基础入门】list交换、翻转,排序、合并和拼接操作
1136 0
|
机器学习/深度学习 计算机视觉 异构计算
MobileNetV2详细原理(含torch源码)
MobileNetV2详细原理(含torch源码)—— cifar10
914 0
MobileNetV2详细原理(含torch源码)
|
机器学习/深度学习 图形学 网络架构
ICLR 2022 | 纯MLP的点云网络:新架构PointMLP大幅提高点云分类准确率和推理速度
ICLR 2022 | 纯MLP的点云网络:新架构PointMLP大幅提高点云分类准确率和推理速度
905 0
ICLR 2022 | 纯MLP的点云网络:新架构PointMLP大幅提高点云分类准确率和推理速度
|
人工智能 自动驾驶 安全
YOLO v8!| 附教程+代码 以及 vs YOLOv6 v3.0
YOLO v8!| 附教程+代码 以及 vs YOLOv6 v3.0