位运算总结

news2024/10/6 0:30:54

位运算

  • 有符号整数
  • 无符号整数
  • 位移运算

1计算机中数字的表示

  • 计算机只有0,1两个数字,所以我们常用的10进制计算

  • 所以我们需表示10进制

  • 要使用二进制来表示10进制数

进制表示法

我们假设一个 8 位的数据类型

方案1

2:0000 0010

我们会发现这样无法表示负数

方案2:原码表示法

最高位表示正负(0正1负),剩余7位表示数值

2: 0000 0010

-2:1000 0010

计算2+(-2)

image-20230606102631587

我们发现结果为 1000 0100,翻译为10进制为 -4 ;同样出现了问题

方案三:补码表示法

  • 补码规则:正数的补码与原码一样;负数:对其绝对值按位取反,+1;
  • 反码:符号位不变,其余位数取反(0—>1,1—>0)
  • 补码:反码+1

-3

先计算-3绝对值的二进制 00000011

取反:11111100

加1:11111101(这就是计算级的-3表示)

2. 规则总结(有符号数)

  • 二进制最高位是符号位:0正1负
  • 正数的原码,反码,补码都一样
  • 负数的反码:符号位不败,其余取反
  • 负数的补码:反码+1
  • 0的补码,反码都是0
  • 计算机运算时使用补码来运算

3. 有符号运算案例

1+1

1的补码: 0000 0001

0000 0001+0000 0001=0000 0010 即10进制的2

1-2

  • 将两个数转换为补码

1的补码: 0000 0001

-2 的原码: 1000 0010

-2的反码:1111 1101

-2的补码:1111 1110

1111 1110 +0000 0001=1111 1111

  • 将结果反推回去

先-1 的到反码 1111 1110

在得到原码 1000 0001 即 10进制表示的 -1(答案正确)

位运算

  • 逻辑运算符

    • &:与,
    • ^:异或,无进位加法
    • |:或:有1则为1
  • 位移运算符

    • <<:左移

    image-20230606105719382

    • 在一些特殊情况下 可以当作*2 使用,但是需要注意二者并不等价,比如 我们左移30位 数字正负都会发生变化
    • 规矩这个规则,任意一个10进制数都会变为0,所以当int 左移位数大于等于32位时,会先求余数,在进行左移即
      • 左移32位相当于不移动
      • 33位相当于移动1位
    • >>:右移

    • >>>:无符号右移

      正数

      10 :0000 1010

      10>>2 0000 0010 —>2

      10>>>2 0000 0010—>2

      我们可以发现对于正数而言其结果一样

      负数

      -10 原码 :1000 1010

      ​ 反码:1111 0101

      ​ 补码:1111 0110

      -10 >>2 1111 1101 (取前6位,高位补1) —》变换回原数:-3

      -10 >>2 0011 1101(取前6位,高位补0)—> 195

      负数二者运算结果不一样

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/618180.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA 的数字信号处理:Verilog 实现简单的 FIR 滤波器

该项目介绍了如何使用 Verilog 实现具有预生成系数的简单 FIR 滤波器。 绪论 不起眼的 FIR 滤波器是 FPGA 数字信号处理中最基本的模块之一&#xff0c;因此了解如何将具有给定抽头数及其相应系数值的基本模块组合在一起非常重要。因此&#xff0c;在这个关于 FPGA 上 DSP 基础…

FPGA驱动FT601实现USB3.0通信测速试验 提供工程源码和QT上位机源码

目录 1、前言2、FT601芯片解读和时序分析FT601功能和硬件电路FT601读时序解读FT601写时序解读 3、我这儿的 FT601 USB3.0通信方案4、vivado工程详解5、上板调试验证6、福利&#xff1a;工程代码的获取 1、前言 目前USB3.0的实现方案很多&#xff0c;但就简单好用的角度而言&am…

【见微知著】Android Jetpack - Navigation的架构设计

前言&#xff1a;人总是理所当然的忘记&#xff0c;是谁风里雨里&#xff0c;一直默默的守护在原地。 前言 Navigation 作为 Android Jetpack 组件库中的一员&#xff0c;是一个通用的页面导航框架。为单 Activity 架构而生的端内路由导航&#xff0c;用来管理 Fragment 的切换…

使用IDEA使用Git:Git使用指北——实际操作篇

Git使用指北——实际操作 &#x1f916;:使用IDEA Git插件实际工作流程 &#x1f4a1; 本文从实际使用的角度出发&#xff0c;以IDEA Git插件为基座讲述了如果使用IDEA的Git插件来解决实际开发中的协作开发问题。本文从 远程仓库中拉取项目&#xff0c;在本地分支进行开发&…

数据结构-Redis(一)

Redis除了性能强外&#xff0c;还有数据结构丰富多彩。 一、String 单值缓存 SET key value GET key 存对象 相信大家都存过&#xff0c;我们一般都是把对象value转json&#xff0c;获取的时候&#xff0c;再json转对象 SET user:1 value(json值) 但当我们需要对对象某…

推荐一款可匹敌国际大厂的国产企业级低无代码平台

文章目录 前言&#xff1a;亟待转型的软开创业者什么是低/无代码居高不下的企业级软件搭建成本1. 开发周期较长2. 在需求明确、软件修改、系统集成等方面存在多种卡点3. 数据管理混乱 无代码/低代码开发&#xff0c;时代的潮流无代码平台 smardaten1. smardaten 简介2. smardat…

ATK-MD0096-V21使用手册

ATK-0.96’ OLED_V2.0(V2.0 是版本号&#xff0c;下面均以 OLED 表示该产品)是 ALIENTEK 推出的一款高性能 OLED 显示模块&#xff0c;&#xff0c;尺寸小巧&#xff08;27mm26mm&#xff09;&#xff0c;结构紧凑&#xff0c;模块通过一个28P的排针与外部连接。 8080并口模式…

「Win」Windows环境变量介绍与操作

✨博客主页&#xff1a;何曾参静谧的博客 &#x1f4cc;文章专栏&#xff1a;「Win」Windows程序设计 相关术语 Windows环境变量&#xff1a;是一组用于存储系统和应用程序配置信息的变量&#xff0c;在Windows操作系统中起着非常重要的作用。本文将详细介绍Windows环境变量的概…

机器学习常识 22: 循环神经网络

摘要: 循环神经网络 (Recurrent Neural Network, RNN) 用于处理序列数据. 本贴以前的算法, 我都用 Java 代码实现过. 很遗憾, 从本贴开始, 就只知道一点概念了. 1. 动机 序列数据中, 前后数据之间不是独立的, 而是会产生上下文影响. 如: 文本, 机器翻译一个句子的时候, 不是…

寻访 | 北京量子信息研究院

前言&#xff1a;为了普及科学技术知识、传播科学思想&#xff0c;光子盒特开启「寻访」专栏&#xff0c;带领各位读者探访全球的量子工厂和实验室。 2023年5月30日下午&#xff0c;为期6天的“2023中关村论坛主会期”落下帷幕。 量子计算、区块链、脑机接口、新能源材料——围…

最优化简明版(下)

最优化方法 牛顿法和拟牛顿法都是求解无约束最优化问题的常用方法&#xff0c;具有收敛速度快的优点。牛顿法是迭代算法&#xff0c;每一步需要求解目标函数的海森矩阵的逆矩阵&#xff0c;计算比较复杂&#xff0c;而且有时候海森矩阵不一定存在逆阵。拟牛顿法通过正定矩阵近…

【软件测试】测试经验:「测试用例」设计、审查、管理

目录 一、测试用例的设计 &#xff08;1&#xff09;测试用例 ① 测试用例的概念 ② 测试用例的功能 ③ 良好测试用例的特征 ④ 测试用例设计的概念 &#xff08;2&#xff09;测试用例设计考虑因素 ① 测试用例设计的主要影响因素 ② 测试用例设计的基本思想 &…

C#,码海拾贝(36)——求“实对称矩阵““特征值与特征向量“的“雅可比过关法“之C#源代码

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 矩阵类 /// 作者&#xff1a;周长发 /// 改进&#xff1a;深度混淆 /// https://blog.csdn.net/beijinghorn /// </summary> public partial class Matrix {…

【SpringBoot+MyBatis】项目的Invalid bound statement (not found)错误

一、注意&#xff1a;我的mapper.xml在静态资源resources文件夹下 二、报错原因&#xff1a; 1、没有在 MyBatis 配置文件中正确配置 Mapper.xml 文件的位置或者配置了错误的位置 (本人出现的问题) 解决方案&#xff1a;在application.yml中添加 mapper-locations。 mybatis:…

MongoDB 基本介绍和操作

目录 1、mongodb 简介 2、mongodb 概念解析 3、mongodb 连接 4、mongodb 数据库操作 5、mongodb 文档操作 6、mongodb 条件操作符 7、mongodb Limit与Skip 方法 8、mongodb 排序 9、mongodb 索引 10、mongodb 聚合 11、mongodb 复制&#xff08;副本集&#xff09; …

chatgpt赋能python:Python字符串非空——为何重要?

Python字符串非空——为何重要&#xff1f; 在Python编程中&#xff0c;我们经常要处理字符串。而有时候我们需要判断一个字符串是否为空&#xff0c;这个需要在处理输入、文件读写等场景下进行。本文将介绍如何在Python中判断字符串是否为空&#xff0c;并探讨字符串非空的重…

java并发编程:CAS与原子操作

文章目录 乐观锁与悲观锁CASUnsafe类AtomicInteger类CAS实现原子操作的三大问题ABA问题循环时间长开销大只能保证一个共享变量的原子操作 乐观锁与悲观锁 锁可以从不同的角度分类。其中&#xff0c;乐观锁和悲观锁是一种分类方式。 悲观锁就是我们常说的锁。对于悲观锁来说&a…

全网最详细的商业智能BI知识讲解

有一点可能很多人没有想到&#xff0c;实际上商业智能BI的相关概念已经有了数十年的发展历史。在这段发展过程中&#xff0c;商业智能BI形成了一套成熟的理论和产品体系&#xff0c;并且在现代的信息化、数字化加成下&#xff0c;成为了各行各业企业的成熟产品。 一、商业智能…

剑指offer打卡

这里写目录标题 day1 二叉树和为某一路径day2复杂链表的复刻day3二叉搜索树与双向链表day4数字排列day5找出出现次数超过一半的次数day6 二进制中1的个数day7 二叉树的最近公共祖先day8 字符串转换为整数day9 构建乘积数组day10不用加减乘除的加法day11求12....nday11 股票的最…

7.1「实战」图书录入和修改API --如何优雅处理校验逻辑?

文章目录 前言一、service层BookServiceImpl.saveBook()BookBO 二、web层BookAdminControllerBookVO 最后 前言 在做了这么多架构铺垫之后&#xff0c;一位订阅同学非常期待我能更新主线API&#xff0c;我觉得他的想法非常合理&#xff0c;所以今天就来安排~~~ 我主要考虑的是…