算法-二进制和位运算
一.二进制
(1).无符号数:
无符号数是一种数据表示方式,它只表示非负整数,即没有符号位,所有的位都用来表示数值大小。在 C++ 等编程语言中,常见的无符号类型有 unsigned int
、unsigned char
等。例如,一个 8 位的无符号整数 unsigned char
可以表示范围为 0
到 255
的整数,而不像有符号的 char
可以表示 -128
到 127
的范围。
对于一个无符号整数,可以使用除 2 取余法手动将其转换为二进制表示。以下是一个简单的 C++ 示例:
#include <iostream>
#include <string>std::string binaryRepresentation(unsigned int num) {std::string binaryStr;while (num > 0) {binaryStr = std::to_string(num % 2) + binaryStr;num /= 2;}return binaryStr;
}int main() {unsigned int num = 10;std::string binary = binaryRepresentation(num);std::cout << binary << std::endl; // 输出 "1010"return 0;
}
(2).有符号数:
计算机中一般利用补码表示法:
- 对于正数,其补码与原码相同。
- 对于负数,补码是在反码的基础上加 1。
- 例如,对于一个 8 位的有符号整数:
+5
的补码表示为00000101
(与原码相同)。-5
的补码- 表示为
11111011
(反码11111010
加 1)。
对于一个使用补码表示的有符号二进制数,将其转换为十进制数的步骤如下:
-
判断正负:
- 首先,观察补码的最高位(符号位)。如果最高位为
0
,则该数为正数,直接将补码转换为十进制即可。 - 如果最高位为
1
,则该数为负数,需要先将补码转换为原码,再将原码转换为十进制。
- 首先,观察补码的最高位(符号位)。如果最高位为
-
正数的转换(原码和补码相同):
- 对于正数,直接将二进制数按权展开求和,即从右到左用二进制位上的数字乘以 ( 从 开始,从右向左递增),然后将结果相加。
- 例如,对于 8 位补码表示的正数
01011010
,转换为十进制为:- 。
-
负数的转换(从补码到原码):
- 对于负数,先对补码取反(包括符号位),然后加 1,得到原码。
- 再将原码按权展开求和,最后加上负号。
- 例如,对于 8 位补码表示的负数
10101101
:- 先取反得到
01010010
。 - 再加 1 得到原码
01010011
。 - 转换为十进制为:-(0x27+1x2+0x25+1x24+0x23+0x22+1x21+1x2)=-83
- 先取反得到
二.位运算
位运算符是一种操作二进制位的运算符,它们直接对操作数的二进制表示进行操作。在大多数编程语言中,常见的位运算符包括:按位与(&
)、按位或(|
)、按位异或(^
)、按位取反(~
)、左移(<<
)和右移(>>
)。这些运算符通常用于对整数类型的数据进行操作,因为整数在计算机中是以二进制形式存储的。
(1)按位与&
- 按位与运算符
&
对两个操作数的每个二进制位进行逻辑与操作。如果两个相应的二进制位都为 1,则结果为 1;否则,结果为 0。 - 示例(C++):
-
#include <iostream> using namespace std;int main() {int a = 5; // 二进制表示为 0101int b = 3; // 二进制表示为 0011int result = a & b; // 结果为 0001,即十进制的 1cout << result << endl; // 输出 1return 0; }
(2)按位或|
-
- 按位或运算符
|
对两个操作数的每个二进制位进行逻辑或操作。如果两个相应的二进制位中至少有一个为 1,则结果为 1;否则,结果为 0。
- 按位或运算符
- 示例(C++):
-
#include <iostream> using namespace std;int main() {int a = 5; // 二进制表示为 0101int b = 3; // 二进制表示为 0011int result = a | b; // 结果为 0111,即十进制的 7cout << result << endl; // 输出 7return 0; }
(3)按位异或^
- 按位异或运算符
^
对两个操作数的每个二进制位进行逻辑异或操作。如果两个相应的二进制位不同,则结果为 1;如果相同,则结果为 0。 - 示例(C++):
-
#include <iostream> using namespace std;int main() {int a = 5; // 二进制表示为 0101int b = 3; // 二进制表示为 0011int result = a ^ b; // 结果为 0110,即十进制的 6cout << result << endl; // 输出 6 }
(4).按位取反~
-
- 按位取反运算符
~
对操作数的每个二进制位取反,即 0 变为 1,1 变为 0。
- 按位取反运算符
- 示例(C++):
-
#include <iostream> using namespace std;int main() {int a = 5; // 二进制表示为 0101int result = ~a; // 结果为 1010,即十进制的 -6cout << result << endl; // 输出 -6return 0; }
(5)左移<<
- 功能:
- 左移运算符
<<
将左操作数的二进制表示向左移动右操作数指定的位数。右侧空出的位用 0 填充。
- 左移运算符
- 示例(C++):
-
#include <iostream> using namespace std;int main() {int a = 5; // 二进制表示为 0101int result = a << 2; // 结果为 010100,即十进制的 20cout << result << endl; // 输出 20return 0; }
(6)右移>>
- 功能:
- 右移运算符
>>
将左操作数的二进制表示向右移动右操作数指定的位数。对于无符号整数,左侧空出的位用 0 填充;对于有符号整数,根据不同的编程语言和机器,可能用符号位填充(算术右移)或用 0 填充(逻辑右移)。
- 右移运算符
- 示例(C++):
-
#include <iostream> using namespace std;int main() {int a = 5; // 二进制表示为 0101int result = a >> 1; // 结果为 0010,即十进制的 2cout << result << endl; // 输出 2return 0; }
相关文章:
算法-二进制和位运算
一.二进制 (1).无符号数: 无符号数是一种数据表示方式,它只表示非负整数,即没有符号位,所有的位都用来表示数值大小。在 C 等编程语言中,常见的无符号类型有 unsigned int、unsigned char 等。…...
OpenAI Chatgpt 大语言模型
OpenAI 一个美国人工智能研究实验室,由非营利组织 OpenAI Inc,和其营利组织子公司 OpenAI LP 所组成。该组织于 2015 年由萨姆阿尔特曼、里德霍夫曼、杰西卡利文斯顿、伊隆马斯克、伊尔亚苏茨克维、沃伊切赫萨伦巴、彼得泰尔等人在旧金山成立࿰…...
SpringBoot【九】mybatis-plus之自定义sql零基础教学!
一、前言🔥 环境说明:Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE mybatis-plus的基本使用,前两期基本讲的差不多,够日常使用,但是有的小伙伴可能就会抱怨了,若是遇到业务逻辑比较复杂的sq…...
C#,人工智能,深度学习,目标检测,OpenCV级联分类器数据集的制作与《层级分类器一键生成器》源代码
一、目标识别技术概述 1、摘要 目标检测是计算机视觉中最基本和最具挑战性的问题之一,它试图从自然图像中的大量预定义类别中定位目标实例。深度学习技术已成为直接从数据中学习特征表示的强大策略,并在通用目标检测领域取得了显著突破。鉴于这一快速发…...
调度系统:Luigi 的主要特性和功能
Luigi 是一个开源的 Python 工作流管理工具,用于构建批处理作业管道,特别适用于数据工程领域。它被设计用来编排任务和处理任务间的依赖关系,支持自动化复杂的 ETL 流程、数据分析、模型训练等任务。 Luigi 的主要特性和功能: 任…...
C# 探险之旅:第二节 - 定义变量与变量赋值
欢迎再次踏上我们的C#学习之旅。今天,我们要聊一个超级重要又好玩的话题——定义变量与变量赋值。想象一下,你正站在一个魔法森林里,手里拿着一本空白的魔法书(其实就是你的代码编辑器),准备记录下各种神奇…...
AUTOSAR:SOME/IP 概念
文章目录 1. 用例与需求1.1 典型用例1.2 对中间件的要求 2. 协议栈示例3. SOME/IP 概念3.1 中间件整体功能与架构3.2 服务组成元素详细解释 4. 服务发现机制深入剖析5. 总结 1. 用例与需求 1.1 典型用例 信息娱乐系统: 后座娱乐系统连接:允许后排乘客连…...
循序渐进kubenetes Service(Cluster ip、Nodeport、Loadbalancer)
文章目录 部署一个web服务Kubernetes Port ForwardKubernetes ServicesClusterIP ServiceNodePort ServiceLoadBalancer Service 部署一个web服务 准备 Kubernetes 集群后,创建一个名为 web 的新 namespace,然后在该 namespace 中部署一个简单的 web 应…...
深入理解 Apache Shiro:安全框架全解析
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在…...
mac 安装CosyVoice (cpu版本)
CosyVoice 介绍 CosyVoice 是阿里研发的一个tts大模型 官方项目地址:https://github.com/FunAudioLLM/CosyVoice.git 下载项目(非官方) git clone --recursive https://github.com/v3ucn/CosyVoice_for_MacOs.git 进入项目 cd CosyVoic…...
币安移除铭文市场的深度解读:背后原因及其对区块链行业的影响
引言: 就在昨天,2024年12月10号,币安宣布将移除铭文市场(Inscriptions Market)。这一消息引发了全球加密货币社区的广泛关注,尤其是在比特币NFT和数字收藏品市场快速发展的背景下。铭文市场自诞生以来迅速…...
深度学习实战野生动物识别
本文采用YOLOv11作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv11以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对野生动物数据集进行训练和优化,该数据集包含丰富的野生动物图像样…...
windows安装使用conda
在Windows系统上安装和使用Conda的详细步骤如下: 一、下载Conda安装包 访问Conda的官方网站Anaconda | The Operating System for AI,点击“Downloads”按钮。在下载页面,选择适合您系统的安装包。通常,对于Windows系统…...
手机租赁系统开发全流程解析与实用指南
内容概要 在如今快速发展的科技时代,手机租赁系统已经成为一种新兴的商业模式,非常符合当下市场需求。那么,在开发这样一个系统的时候,首先要从需求分析和市场调研开始。在这一阶段,你需要了解用户需要什么࿰…...
SpringBoot 开发—— YAML文件深度分析
文章目录 一、YAML概述二、数据表示三、YAML 的语法四、YAML 的应用五、YAML 与其他格式的比较1、YAML vs .properties文件可读性和结构数据类型支持扩展性和灵活性使用场景性能和支持2、YAML vs. JSON3、YAML vs. XML六、使用 YAML 的注意事项七、总结YAML 是非常流行的一种配…...
复合机器人整体解决方案
复合机器人是一种集成移动机器人和协作机器人两项功能为一身的新型机器人,更符合人们想象中“脑、眼、手、脚”融合的机器人终极形态。复合机器人的整体解决方案通常涉及多个方面,包括机器人本体、控制系统、感知系统、执行系统以及周边配套设备等。以下…...
【Oracle11g SQL详解】日期和时间函数:SYSDATE、TO_DATE、TO_CHAR 等
日期和时间函数:SYSDATE、TO_DATE、TO_CHAR 等 在 Oracle 数据库中,日期和时间函数用于处理日期和时间数据。它们在记录创建时间、分析时间间隔、格式化输出等场景中非常重要。本文将详细讲解常用的日期和时间函数及其应用。 一、SYSDATE:获…...
VSCode设置字体
参考文章:【面向小白】vscode最佳实践(2)—— 字体设置(fira code更纱黑体),这篇文章末尾给了安装字体的链接。 配置的字体还是很好看的。 ‘Fira Code Retina’, ‘Sarasa Mono Sc’ 需要注意的一个点&am…...
shell编程入门之提取字符并设置rtc时间
awk用法 awk是一款文本处理工具,通常在Unix和Linux操作系统中使用,用于以行为单位对文本进行处理和操作。它可以读取输入文本,对其进行处理,生成报表、统计信息等,并将结果输出到标准输出设备中。 它主要有以下特点&…...
react 不可变数据更新(Immutable Update)合并对象 类似与Java 的BeanUtils.copyProperties
{ ...state, // 保留原有的 state 的其他部分data: { ...state.data, // 保留 state.data 中的其他字段...action.payload // 使用 action.payload 覆盖 state.data 中需要更新的字段} }这段代码是 Redux 中常见的一种状态更…...
Linux GCC基础用法⑦
在 CentOS 7 系统中使用 GCC 与编写 99 乘法表 一、GCC 简介 GCC(GNU Compiler Collection)是一套功能强大的编程语言编译器,在 CentOS 7 系统中广泛用于编译 C、C等多种编程语言的程序。它能够将源代码转换为可执行文件,让计算…...
PyTorch 切片运算 (Slice Operator)
PyTorch 切片运算 {Slice Operator} 1. [:, -1, :]2. [:, [-1], :]References 1. [:, -1, :] https://github.com/karpathy/llama2.c/blob/master/model.py import torchlogits torch.arange(1, 16) print("logits.shape:", logits.shape) print("logits:\n&…...
SpringSecurity Oauth2 -账号密码实现多因子身份认证
1. 密码策略问题 CREATE TABLE t_storage (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 自增主键,nameSpace varchar(64) NOT NULL COMMENT 隔离字段,groupId varchar(128) NOT NULL COMMENT 分组,比如不同app,dataId varchar(64) NOT NULL COMMENT 数据存储id…...
【CSS in Depth 2 精译_071】11.4 思考字体颜色的对比效果 + 11.5 本章小结
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 11 章 颜色与对比】 ✔️ 11.1 通过对比进行交流 11.1.1 模式的建立11.1.2 还原设计稿 11.2 颜色的定义 11.2.1 色域与色彩空间11.2.2 CSS 颜色表示法 11.2.2.1 RGB…...
Y3编辑器文档4:触发器1(对话、装备、特效、行为树、排行榜、不同步问题)
文章目录 一、触发器简介1.1 触发器界面1.2 ECA语句编辑及快捷键1.3 参数设置1.4 变量设置1.5 实体触发器1.6 函数库与触发器复用 二、触发器的多层结构2.1 子触发器(在游戏内对新的事件进行注册)2.2 触发器变量作用域2.3 复合条件2.4 循环2.5 计时器2.6…...
趣味编程:猜拳小游戏
1.简介 这个系列的第一篇以猜拳小游戏开始,这是源于我们生活的灵感,在忙碌的时代中,我们每个人都在为自己的生活各自忙碌着,奔赴着自己所走向的那条路上,即使遍体鳞伤。 但是,生活虽然很苦,也不…...
软件工程 概述
软件 不仅仅是一个程序代码。程序是一个可执行的代码,它提供了一些计算的目的。 软件被认为是集合可执行的程序代码,相关库和文档的软件。当满足一个特定的要求,就被称为软件产品。 工程 是所有有关开发的产品,使用良好定义的&…...
CountDownLatch阻塞后countDown未执行会如何?
背景 某项目封装了 Kafka 消费者 API,根据传递的消费者线程数,创建 N 个消费者线程同时消费对应 topic 的数据,并在线程启动后收集到全局列表中,方便在程序调用 stop 流程时逐个停止。 主控类在创建 Kafka 消费线程时使用了 Cou…...
k8s,operator
相对更加灵活和编程友好的管理“有状态应用”的解决方案,它就是:Operator 会议一下有状态应用: 比如数据库集群,数据挂载需要有顺序维护拓扑关系的应用 使用statefulSet这个对象来描述。 CRD又是什么? Operator的工作…...
使用 pyperclip 进行跨平台剪贴板操作
简介:pyperclip 是一个轻量级的 Python 库,支持在不同操作系统(Windows、macOS、Linux)中进行剪贴板的复制和粘贴。这个库的设计简单易用,非常适合需要频繁进行文本复制粘贴操作的场景。 历史攻略: 使用f…...
设计单网站建设/百度账号登录不了
匿名用户1级2018-12-26 回答PHP 没玩过, 给你一个 C# 里面的 处理的 步骤。你对照着看看, 会不会是 thinkphp 连接 Mysql 的时候, 少传了参数。-- 创建数据库的时候, 指定字符集.CREATE DATABASE test_utf8DEFAULT CHARACTER SET utf8COLLATE…...
wordpress 手机页面停/公司做个网站多少钱
>>>>>Unit 11.行提示符例如:[kioskfoundation0 Desktop]$kiosk ##打开shell的用户 ##分隔符foundation0 ##主机名称Desktop ##工作目录名称$ ##身份提示符,#表示超级用户,$表示普通用户注:命令要在行提示符之后输入…...
网站模板下载软件/电商中seo是什么意思
在目前的内核版本中,存在三种流行的字符设备编程模型:杂项设备驱动模型,早期经典标准字符设备驱动模型, Linux 2.6 标准字符设备驱动模型。Linux 系统借鉴了面向对象的思想来管理设备驱动 ,每一类设备都都会有定义一个…...
acg大神做的网站/百度网盘登录入口官网
Liberty means responsibility. That is why most men dread it. — George Bernard Shaw Unless a man has talents to make something of himself, freedom is an irksome burden. — Eric Hoffer 起这么吓人的一个题目,其实只是想写一下 Linux。但我保证决不…...
ps做图 游戏下载网站/网上哪里接app推广单
今天在公开课里看到直接用get_page函数来获取网页的代码 可自己尝试了下发旋无论是在python2还是python3里头都并不是预先设定好的函数 解决方案如下: import urllib2 def get_page(url):return urllib2.urlopen(url).read()def get_next_target(page):start_lin…...
ui交互动效 wordpress/电子商务平台有哪些
文章目录写在开头的话功能需求演示写在最后的话:这里是一段防爬虫文本,请读者忽略。 本文原创首发于CSDN,作者IDYS 博客首页:https://blog.csdn.net/weixin_41633902/ 本文链接:https://blog.csdn.net/weixin_41633902…...