Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 仅使用位运算反转数字_C++_Algorithm_Bit Manipulation_Reverse_Bitwise Operators - Fatal编程技术网

C++ 仅使用位运算反转数字

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为基数的数字(

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

仅使用位运算符(主要是移位运算符)无法有效地反转数字。但我们可以使用BCD转换将整数转换为BCD,然后使用移位运算符反转。因此,在BCD转换后,我们可以按相反顺序逐步移动每组4位(表示0-9之间的数字),以获得BCD格式的反向数字。

这是否回答了您的问题?是否确实需要使用按位(与基本算术相反)运算反转以10为基数的数字(与二进制相反)?我很确定没有优雅的方法可以做到这一点。“只使用位运算”是否意味着不使用for,while,if?请解释一下这意味着什么?你可以用位运算来实现,但是你需要用移位/比较/减法来实现除法。所有这些都可以按位方式完成,我们下个月见;)和