位操作leetcode

Camera metadata 阅读详情

知识背景
计算机存储形式为二进制,二进制存在三种不同表示形式:原码,反码,补码

原码:从左往右读数,第一位为符号位,0代表正,1表示负
反码:反码是建立在原码的基础上,正数的反码是本身,负数的反码是符号位不变,其余取反!!!!!!
补码:补码也是建立在原码的基础上,正数的补码不变,负数符号位不变,其余取反,然后加1

1的 原码:0000 0001
反码 0000 0001
补码 0000 0001
-1的原码 1000 0001
反码: 1111 1110
补码 1111 1111

按位操作
按位非~:对所有二进制进行直接取反
按位与&:两个二进制数据的对应位都为1时,才为1
按位或|:两个二进制数据的对应位只要一个为1时,就为1
按位异或^(满足交换律与结合略):两个二进制数据的对应位不相同时,才为1

a = 0001 0011 [19]
b = 1000 1010 [-10]
~a=1110 1100 [-108]
a&b=0000 0010 [2]
a|b=1001 1011 [-27]
a^b = 1001 1001 [-25]

按位左移<<:
nums<<i将nums的二进制数进行左移i位
按位右移>>:
nums>>i nums的二进制数进行右移i位
在这里插入图片描述

重点:异或a^0=a, a ^a=0;a ^b ^c = a ^c ^b

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int tem = 0;
        for(int i:nums)
        tem = tem^i;
        return tem;
       
    }
};

异或操作可以用于交换数据,但是前提是两个数据不在同一空间

(x == y) || ((x ^= y), (y ^= x), (x ^= y)) 

参考
深入理解计算机中的原码、补码、反码

某程token参数逆向分析 作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除! 阅读详情

相关推荐

LeetCode位操作实战:添加元素使和等于目标值

题型解题思路示例题目查找唯一元素使用异或运算查找两个唯一元素异或 + 分组异或查找出现奇数次的唯一元素异或 + 哈希表不使用额外空间交换变量异或三步法无特定编号统计二进制中1的个数位运算 + 循环判断是否是2的幂位运算:n & (n - 1) == 0# 判断一个数是否是2的幂逻辑分析若n是2的幂,则其二进制表示中只有一个1会将最低位的1置为0。

weixin_35266799的博客 979

LeetCode分类刷题(一):位操作(Bit Manipulation)

位运算(Bit Manipulation)一直是程序员面试中的一个必须准备的主题, 不过现在面试中位运算出现的次数并不多,主要原因还是位运算太考察技巧了,很多时候很难在短时间内想出来,所以作为面试的题目显得有点太花时间了。 位运算的主要思想是五种运算:与(&amp;),或(|),异或(^),左移(&lt;&lt;),右移(&gt;&gt;)。 位运算的常用技巧如下: n &amp;(n-1)能...

pushup8的博客 1万+

感应(异步)电机间接磁场定向控制MATLAB/Simulink仿真模型(PI参数由理论计算得到)

主电路为直流电源+逆变器+感应电机。控制包含速度环PI控制、电流环PI控制、空间矢量调制(SVPWM),注意磁场定向方式为间接转子磁场定向。主电路模型与控制模型采样周期不同,用于模拟实际控制器(DSP、FPGA)处理流程。所有参数在Model Properties->Callbacks->InitFcn里设置,PI控制参数由理论公式计算得到,公式都在里面,其他电机参数也可用。模型模块有不同的颜色,是因为在Display->Sample Time->Colors设置了采样周期颜色,用于区分不同采样周期的模块,可自行关闭。MATLAB版本为2016b。如有任何疑问可私信留言,或查看本人博客。

Leetcode基础算法-位运算

位运算(Bit Operation): 在计算机内部, 数是以「二进制(Binary)」的形式存储. 位运算是直接对数的二进制进行操作, 使用位运算可显著提高程序性能.

machenme的博客 932

位运算实用技巧与LeetCode实战

不过,这些技巧大多相对晦涩,并不适合每个人深入学习,更多时候它们更适合作为参考资料。真正值得掌握的是那些既有趣又实用的位运算技巧。因此,本文会从浅入深,先介绍一些有趣的但可能用处不大的位运算技巧,再总结一些在算法问题和实际开发中非常常见且实用的位运算技巧。

玦尘的博客 842

Leetcode零基础刷题指南》- 位运算操作

目录 前言 一、介绍几种位运算 1.逻辑位运算符 2.位移运算符 二、例题分析 1.2的幂(传送门) 2.4的幂(传送门) 3.用位运算相加两个数字(传送门) 4.交替位二进制数(传送门) 5.找出所有子集的异或总和再求和(传送门) 6.两整数之和(传送门) 7.插入(传送门) 总结 前言 熟练掌握位运算使用方法。 一、介绍几种位运算 位运算分为两类: 1.逻辑位运算符 a.位与( &amp...

YQ20210216的博客 1196

[LeetCode] 一些位操作类的算法

1. 出处 找列表中唯一出现一次的元素 汉明重量/数1出现的次数 汉明距离 2. 说明 2.1 基本规则 从二进制数开始分析有一些有趣的基本操作: 乘2: 右移动1位 除2: 左移1位 0 &amp;amp;amp; 0 = 0, 1 &amp;amp;amp; 0 = 0, 1 &amp;amp;amp; 1 = 0,这个用来处理数1出现的位数,后边会写 0 ^ 0 = 0, 1 ^ 0 = 1, 1 ^ 1 ...

嗡汤圆的博客 275

Python刷遍Leetcode系列 - 位操作

Python刷遍Leetcode系列 - 位操作 最近,打算花点时间写个Python解决Leetcode题的系列文章~ 面试题环节中,面试官有时挺喜欢考察一些具有特殊技巧的问题,比如:今天要讲到的位操作(Bit operation)。 比较典型的一个问题是 Leetcode 上第 191 号问题, Leetcode 191. Number of 1 Bits 在线地址: https://leet...

Python名人堂 451

力扣:数字的位操作问题总结(7、9、190)

一、数字的位操作问题 有一类力扣题,要求我们对数字的每一位进行操作。 比如:将123转化为321。 二、力扣题 1.7. 整数反转 通解 class Solution { public int reverse(int x) { /* 按位操作 */ /* *关键:处理溢出 *2,147,483,647 */ int res = 0; while(x != 0) {

南七行者的博客 231

LeetCode[只出现一次的数]-位操作

LeetCode[只出现一次的数]-位操作 题目: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 int singleNumber(int* nums, int numsSize) { int ans=0; for(int i=0;i<numsSize;

Liaaar的博客 112

Leetcode 刷题之链表和位操作

reverse Linked List bit operation reverse Linked List 206. Reverse Linked List /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * L

I AM BACK 330

leetcode位操作例题

位操作 位操作(Bit Manipulation)是程序设计中对位模式或二进制数的一元和二元操作。常用的位操作有: 消除数字 n 的二进制表示中的最后一个1 n & (n - 1) 获得数字n的最低非0位 n & (-n) 常见的移位操作 1. 数组中只出现一次的数字 例题描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 思路: 利用位操作中的异或操作来完成,异或操作:相同为0,不同为1,所以数组中所有相同的数经过

weixin_38942814的博客 248

C++学习笔记——位操作的妙用 由leetcode318题想到的

先放题目: Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. You may assume that each word will contain only lower ca

不忘初心 方得始终 415

LeetCode 342. Power of Four【迭代/位操作/数学/打表】简单

Given an integer n, return true if it is a power of four. Otherwise, return false. An integer n is a power of four, if there exists an integer x such that n == 4x. Example 1: Input: n = 16 Output: true Example 2: Input: n = 5 Output: false Example 3: I

memcpy0的博客 880

​Python刷遍Leetcode系列 - 位操作

最近,打算花点时间写个Python解决Leetcode题的系列文章~ 面试题环节中,面试官有时挺喜欢考察一些具有特殊技巧的问题,比如:今天要讲到的位操作(Bit operation)。 比较典型的一个问题是 Leetcode 上第191号问题, Leetcode 191. Number of 1 Bits 在线地址: https://leetcode-cn.com/problems/number-...

weixin_43932460的博客 261

leetcode】高频题目整理_位操作篇( High Frequency Problems, Bit_Manipulation )

截止至今LeetCode题目总量已经有1582题,估计将来每年平均增长300题左右,大部分人肯定是刷不完的,所以得有选择地刷LeetCode。 一种公认的刷题策略是按类别刷题,可是每个类别也有许多题,在有限的时间里到底该刷哪些题呢?个人根据LeetCode官方给出的每个题目的出现频率,整理并收录了每个类别里高频出现的题目,对于官方统计频率太低的题目,不予收录,最终得到了这个高频题目表格。 例如,对于下图中题号#275与#270的题目将被收录,并且#275出现频率大于#270;而对于题号#1011与#11

嵌入式与Linux那些事的博客 1473

leetcode(10) || 动态规划 && 位操作

目录 动态规划 Triangle(mid) Maximum Subarray(easy) Maximum Product Subarray(mid) Longest Increasing Subsequence(最长递增序列)(mid) Palindrome Partitioning II(分割回文串)(hard) Maximal Rectangle(最大矩形)(hard) Bes...

向着星辰大海 1949

leetcode 461 Hamming Distance(位操作入门)

题目来源:LeetCode 461 简单题目分析: 求a和b二进制表示中,一共有多少不同的位。例如1的二进制表示为0001,4的二进制表示为0100,那么1和4不同的位是2. 一开始我的思路很简单,直接遍历32位整数的每一位,代码如下: int hammingDistance(int x, int y) { int i,ans=0; for(i=0;i<32;++i)

Polanwind 338

力扣解法汇总693-交替位二进制数

目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。 示例 1: 输入:n = 5 输出:true 解释:5 的二进制表示是:101 示例 2: 输入:n = 7 输出:false 解释:7 的二进制表示是:111

分享+记录 343

leetcode -- Single Number II &III- 位操作,没有理解

Single Number IIhttps://leetcode.com/problems/single-number-ii/位操作不熟悉,复习的时候再熟悉一下参考 http://www.cnblogs.com/zuoyuan/p/3719753.html http://yucoding.blogspot.hk/2014/10/single-number-ii.htmlSingle Number

xyqzki的专栏 602

LeetCode专题------位操作

1、LeetCode190. Reverse Bits Reverse bits of a given 32 bits unsigned integer.For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represente

changetocs的博客 604
上一篇: leetcode 字符串
下一篇: 搜索leetcode
喵喵喵喵诺
博客等级 码龄8年 8粉丝 50原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值