C++ 仅使用位运算反转数字
仅使用位运算反转给定的数字 例如。: 输入:4532 产出:2354 我想不出任何按位操作来解决这个问题。任何解决方案/帮助都会有很大帮助。C++ 仅使用位运算反转数字,c++,algorithm,bit-manipulation,reverse,bitwise-operators,C++,Algorithm,Bit Manipulation,Reverse,Bitwise Operators,仅使用位运算反转给定的数字 例如。: 输入:4532 产出:2354 我想不出任何按位操作来解决这个问题。任何解决方案/帮助都会有很大帮助。 10的除法和模运算只需使用位运算即可。仅使用位运算符(主要是移位运算符)无法有效地反转数字。但我们可以使用BCD转换将整数转换为BCD,然后使用移位运算符反转。因此,在BCD转换后,我们可以按相反顺序逐步移动每组4位(表示0-9之间的数字),以获得BCD格式的反向数字。这是否回答了您的问题?是否确实需要使用按位(与基本算术相反)运算反转以10为基数的数字(
10的除法和模运算只需使用位运算即可。仅使用位运算符(主要是移位运算符)无法有效地反转数字。但我们可以使用BCD转换将整数转换为BCD,然后使用移位运算符反转。因此,在BCD转换后,我们可以按相反顺序逐步移动每组4位(表示0-9之间的数字),以获得BCD格式的反向数字。这是否回答了您的问题?是否确实需要使用按位(与基本算术相反)运算反转以10为基数的数字(与二进制相反)?我很确定没有优雅的方法可以做到这一点。“只使用位运算”是否意味着不使用for,while,if?请解释一下这意味着什么?你可以用位运算来实现,但是你需要用移位/比较/减法来实现除法。所有这些都可以按位方式完成,我们下个月见;)和