仅使用按位运算反转数字

Posted

技术标签:

【中文标题】仅使用按位运算反转数字【英文标题】:Reverse a number using bitwise operations only 【发布时间】:2020-09-23 18:04:16 【问题描述】:

仅使用按位运算反转给定数字 例如。: 输入: 4532 输出: 2354 我想不出任何按位运算来解决这个问题。任何解决方案/帮助都会有很大帮助。 除以 10 和取模只需使用按位运算。

【问题讨论】:

这能回答你的问题吗? Reversing a Number using bitwise shift 您确定需要使用按位(相对于基本算术)运算来反转 base 10(相对于 binary)中的数字吗?我很确定没有优雅的方法可以做到这一点。 “仅使用按位运算”是否意味着不使用 for、while、if、...?请解释一下这是什么意思? 可以使用按位运算来完成,但您需要使用 shift/compare/subtract 来实现除法_by_10_with_remainder。所有这些都可以按位方式完成,我们下个月再见;) en.wikipedia.org/wiki/Double_dabble 和 cypress.com/file/42131/download 【参考方案1】:

仅使用位运算符(主要是移位运算符)没有有效的反转数字的方法。但是我们可以使用 BCD 转换将整数转换为 BCD,然后使用移位运算符进行反转。所以在 BCD 转换之后,我们可以将每组 4 位(代表 0-9 范围内的一个数字)按相反的顺序逐步移位,得到 BCD 格式的反转数字。

【讨论】:

以上是关于仅使用按位运算反转数字的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 javascript 中的 256 位数字并对它们执行按位运算?

C/C++编程知识:运算符丨按位运算符,知识点详解

非数字的按位运算

大位向量的按位运算

Java笔记:位运算

使用按位运算符生成特定位模式