反转32 位数

把一个字节按位翻转源代码,C语言编写 假设有二制数a = 01B,翻转后则为10B,同样的,如果原来是10B,翻转后则为01B.我们再试一下,可以发现如果原来为11B或者00B,翻转后则不变.这时我们可以写出两位二进制数的翻转算法如下: if( a == 01B || a == 10B ) a ^= 11B; else a = a; 立即下载

笔试的时候遇见一道这样的题目,不会做...回来赶紧上网找...感觉牛人就是牛人...这样的算法我为啥就是想不出来呢

把一个32位的数按位反转,就是第32位转到第1位,第31位转到第2位…………
什么样的算法最节省效率?
参考http://www.yuanma.org/data/2007/0723/article_2763.htm

第一行代码为奇偶位相互交换;第二行为以两位为一单元,奇偶单元进行交换;第三行为以四位为一单元,奇偶单元进行交换;第四行为以八位为一单元,奇偶单元进行交换;最后一行为以十六位为一单元,奇偶单元进行交换。至此,32位反转完成,算法结束。
 
上述奇偶、2、4、8、16的交换方法可以演变有四种实现形式,本质一样,可以都先移后取、都先取后移以及一个先移后取、另一个先取后移
 
受上面程序启发,可以考虑16、8、4、2、奇偶来实现交换,即先将左右整体换边,再处理局部换边的问题,
 
将32位分成两个16位的箭头,折半互换有两种实现方式:
一,先把每个箭头换向,整体分别左移或右移16位,即可;问题是每个箭头怎么换向?问题又成了16位数怎么折半互换,再分成两个8位的箭头,如上方法,依次实现,最后就是奇偶互换了,可以形成递归算法;或者将1的思路反相考虑,直接奇偶互换,2、2互换,4、4互换,8、8互换,16、16互换即可,是一种倒推条件的方法,对应于原作者的方法。
 
二,先把两个箭头的位置互换,即16、16互换;再将每个箭头分成两份,两组8、8互换,依次类推,4组4、4互换,8组2、2互换,16组奇偶互换,实现方法和思考方法一致。
 
第二种方法更容易想到,借鉴了二分查找的思想,逐层分半。


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/TanXiangHao/archive/2008/10/14/3072948.aspx

基于555定时器的D类功放设计:从PWM原理到无反馈电路实践 D类功放(数字功放)是一种高效率的音频放大技术,其核心原理是脉冲宽度调制(PWM)。它将输入的模拟音频信号转换为一系列高速开关的脉冲,通过控制功率开关管(如MOSFET)的通断,再经低通滤波器还原放大后的音频。相比传统AB类功放,其转换效率通常超过90%,显著降低了热能损耗。这项技术在追求高能效和小型化的现代音频设备中价值凸显,广泛应用于有源音箱、汽车音响和便携式设备。本文聚焦于一种独特的实现方案:以经典的555定时器芯片为核心,构建一个无整体负反馈的D类功放。通过剖析其PWM调制器、FET电压-电流转换级 阅读详情

相关推荐

别再模拟IIC了!用STM32F103C8T6的硬件IIC驱动AT24C64,CubeMX配置+避坑指南

本文详细介绍了如何使用STM32F103C8T6的硬件IIC驱动AT24C64 EEPROM,通过CubeMX配置和HAL库函数解析,提供从模拟IIC到硬件IIC的完整解决方案。内容包括硬件IIC与模拟IIC的核心差异、CubeMX工程配置详解、HAL库驱动实战以及典型问题诊断与优化,帮助开发者构建更稳定高效的存储系统。

weixin_27038245的博客 188

详解一种高效位反转算法

目前x的数值为高16bit与低16bit进行交换,结果如下图:完成整个位反转算法。

iceFreedom的博客 1170

SAP PP实战:MRP Area怎么用?手把手教你按产线、委外供应商拆分物料计划

本文详细解析了SAP PP模块中MRP Area的功能与应用,指导如何按产线、委外供应商拆分物料计划,实现精细化物料需求管理。通过实战案例展示MRP Area在减少计划冲突、提升库存准确率方面的显著效果,为制造业企业提供可落地的解决方案。

weixin_27015733的博客 432

32位整数按位反转算法分析

一. 有牛人设计的算法如下: unsigned int bit_reverse(unsigned int n) {        n = ((n >> 1) & 0x55555555) | ((n 1) & 0xaaaaaaaa);        n

2310

POST 接口,将参数拼接到 URL 上,而不是将其作为表单数据发送

POST 接口,将参数拼接到 URL 上,而不是将其作为表单数据发送

pig_ning的博客 3146

图解5G HARQ-ACK反馈:从DCI解析到PUCCH发送的完整数据流

本文详细解析了5G通信系统中HARQ-ACK反馈机制的完整流程,从DCI解码到PUCCH发送的实战指南。重点介绍了HARQ-ACK码本生成、DCI关键参数解读以及PUCCH资源映射等核心技术环节,帮助工程师深入理解5G NR中的数据传输可靠性保障机制。

weixin_27722377的博客 396

个人感觉最优的按位翻转数据算法

unsigned char ReverseBits(unsigned char ch){ ch = (ch & 0x55) << 1 | (ch >> 1) & 0x55; ch = (ch & 0x33) << 2 | (ch >> 2) & 0x33; ch = (ch &...

qq_34563420的博客 1581

Sentence-BERT 语义相似度双塔模型

论文介绍 发表:2019,EMNLP 论文题目:《Sentence-BERT:sentence embeddings using siaese BERT-networks》 论文地址:https://arxiv.org/abs/1908.10084 Github:https://github.com/UKPLab/sentence-transformers 适用领域: 句向量生成 语义相似度计算 语义搜索 无监督任务(聚类) 1 概述 在20年之前的各种预训练模型中,比如bert,XLNet,Alb

weiyaner的博客 9194

【位操作笔记】位反转算法 通过7次运算完成

一种位反转算法 by Sean Anderson位反转说明位反转算法代码算法说明算法来源算法计算过程拓展 位反转说明 这里的位反转(Bit Reversal),指的是一个数的所有bit位依照中点对换位置,例如0b0101 0111 => 0b1110 1010。也可以叫二进制逆序,按位逆序,位翻转等等。 位反转算法代码 unsigned char reverse(unsigned char x) { x = ((x * 0x0802LU & 0x22110LU) | (x * 0x80

929

【机器人】机械臂控制入门技术栈分享

机械臂控制入门技术栈分享1.前言2.机器人控制入门技术栈2.1.空间描述和变化2.2.运动学分析2.3.动力学建模2.4.控制入门学习3.进阶部分3.1.机器人参数辨识3.2.非线性控制3.3.现代机器人描述方法:指数坐标4.总结 1.前言 今天看到优快云上有个分享个人技术栈的活动,虽然我不是一个正规的程序员,也不搞前端、后端这些,但我一直在优快云上通过写博客对我的学习进行总结,于是我突发奇想,不如我也写一下我的个人技术栈,针对机械臂控制入门的,因为我水平也不高,所以本文内容也许不够饱满,也不够准确,但

要恰饭得嘛 5858

泛微ecology9 利用字段值动态控制明细表显示与隐藏

本文详细介绍了在泛微ecology9中,如何利用WfForm.bindFieldChangeEvent监听字段变化,结合jQuery动态控制明细表显示与隐藏的实战方法。通过五步操作,可实现根据字段值(如报销类型)智能切换明细表,提升表单交互体验与开发效率,并确保PC与移动端完美兼容。

7z8x2c4v6b9的博客 585

反转32位数

<br />1、问题 :<br />      把一个32位的数按位反转,就是第32位转到第1位,第31位转到第2位…………<br />         什么样的算法最节省效率?<br />2、解答 :http://www.yuanma.org/data/2007/0723/article_2763.htm<br />        unsignedint bit_reverse(unsignedint n)<br />   {<br />        n =(( n >> 1)&

Thinkingstorm的专栏 729

YOLOv8集成EMA注意力机制YOLOv8完整教程 将EMA注意力机制集成到YOLOv8框架中

YOLOv8教程这篇文章介绍了如何将EMA(高效多尺度注意力)机制集成到YOLOv8目标检测框架中。YOLOv8 EMA注意力机制通过多尺度特征融合和高效计算,能够提升模型对关键特征的关注能力。文章详细解析了EMA的原理和结构设计,包括其核心组件和前向传播过程。此外,提供了完整的实现指南,包括环境准备、项目结构设置、EMA模块代码实现(包含分组处理、空间注意力计算和特征融合等关键步骤)。YOLOv8 YOLOv8 YOLOv8 YOLOv8 YOLOv8

FJN110的博客 928

C/C++面试之算法系列--从"反转32 位数"算法题分析面试策略

  【序】创新的源泉在哪?idea来自于analogy and imitation。下面第二种方法是我在分析原作者的思路时想到的,也就是借鉴模仿吧,让我突然觉得,如果每一个算法题目,要是能分析其精髓,举一反三,再来点创新,我相信不用把所有常考的算法都做一遍,我也能够应付,这才是我学习此算法得到的idear!                                            

Sailor_forever 3153

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【位操作笔记】详解一种高效位反转算法

详解一种高效位反转算法 这里的位反转(Bit Reversal),指的是一个数的所有bit位依照中点对换位置,例如0b0101 0111 => 0b1110 1010。也可以叫二进制逆序,按位逆序,位翻转等等。 高效位反转算法原理: 算法运用了分治法(divide and conquer),以两个bit位一组,对调相邻的bit位;然后再以4个bit位为一组,分成左边两个bit位一段和右边两个bit位一段,然后这两段相互对调;然后再以8个bit位为一组,以此类推,最后完成位反转。 下面举例一个32位数的

1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

[代码模板]将一个32位的二进制串反转

原串:10010001111011010101011001110101输出:10101110011010101011011110001001也就是,最后一位变成了第一位,第一位变成了最后一位。如果固定为32位,用如下函数解决(gxqcn提供)reverse(uint x) ...{         uint y = 0x55555555;         x = (((x  >

碧海蓝天 863

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

leetcode整数反转--判断32位数是否溢出

class Solution(object): def reverse(self, x): def encode_x(x): list_r=[] while x>=10: list_r.append(x%10) x=x/10 list_r.append(x) int_r=0 for i in l.

lxhseph的博客 1199

python反转一个三位数_给定一个 32 位有符号整数,将整数中的数字进行反转。...

def reverse(x):if x>0:a=list(reversed(list(str(x))))if a[0]=='0':b=int(''.join(a[1:]))if bpow(2,31)-1:return 0else:return belse:b=int(''.join(a))if bpow(2,31)-1:return 0else:return belif x pow(2, 31) ...

weixin_39606019的博客 227

给定一个 32 位有符号整数,将整数中的数字进行反转。

示例: 例如:给定数“456”,需返回“654”,给定“-876”,则需返回“-678” 注意: 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231− 1]。根据这个假设,如果反转后的整数溢出,则返回 0。 解答(这篇文章思路分析还行,代码写的需要提高): 看到题意,我们知道: (1)注意 X 的 正负 ,(若为 负数 ,为了防止做除法时(向下取整),取其绝对值 ,)用一个数 记录 X的状态 (2)首先需要将给定的数 X 的个位、十位分隔开, (3...

u011250186的博客 1192

c语言按位反转、二进制输出函数

#include //bit_reverse:32位数按位反转函数 //  作用:把一个32位整数按位反转,即第1位转到第32位,第2位转到第31位,依次下去。 //算法实现:第一行代码为奇偶位相互交换;第二行为以两位为一单元,奇偶单元进行交换;第三行为以四位为一单元,奇偶单元进行交换;第四行为以八位为一单元,奇偶单元进行交换;最后一行为以十六位为一单元,奇偶单元进行交换。至此,32位

Android/Linux的专栏 4232

LeetCode:整数反转(判断一个数是否超过Integer32位数的有效范围小技巧)

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-integer 获取整数的反转,这一步相对简单,获取x这个数的最后一个数字n,然后进行sum = sum * 10 + n这一步代码,然后不断进行循环,从而得到x

奋斗的龙猫的博客 2712

7.整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 怎么判断十进制的位数? ...

Jan___的博客 185

常见面试算法题:反转整数

题目:给定一个 32 位有符号整数,将整数中的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 注意: 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。 编码思路:按照输入整数的位数,对整数进行遍历,每次训练获取最后面的尾...

建设美丽祖国 853

整数反转

一、需求 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 示例 1: 输入:x = 123 输出:321 示例 2: 输入:x = -123 输出:-321 示例 3: 输入:x = 120 输出:21 示例 4: 输入:x = 0 输出:0 二、字符串法 2.1 思路分析 给定的整数可能为正,也可能为负,使...

皮卡qiu~的博客 324

【数学】LeeCode7.整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1],就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 题解一:修改最终rev类型为long 第一反应就是, 取余得到个位数,然后除以 10 去掉个位数,然后用一个变量保存倒置的数。 一个整数%10得到该整数的个位数,/10得到该整数的前几位(除最后一位),要实现整数的翻转,只需要在以整数x!=0为条件的循环体内,令y = x%10

haohaoxuexiyai的博客 384
上一篇: 使用VC6.0对MFC源代码挖掘
下一篇: 关于常见排序算法的稳定性分析和结论(转载)
iwknow
博客等级 码龄19年 7粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值