如何使用位运算符反转一个数字的数字顺序?
输入:
x = 123;
输出:
x = 321;
如何做到这一点?
如何使用位运算符反转一个数字的数字顺序?
输入:
x = 123;
输出:
x = 321;
如何做到这一点?
那不是反转位,而是翻转十进制数字的顺序,这是完全不同的。以下是一种方法:
var x = 123;
var y = 0;
for(; x; x = Math.floor(x / 10)) {
y *= 10;
y += x % 10;
}
x = y;
如果您真的想要翻转比特(bit),则应该这样做:
x = ~x;
作为一个函数:
function reverse(n) {
for(var r = 0; n; n = Math.floor(n / 10)) {
r *= 10;
r += n % 10;
}
return r;
}
var x = 123;
var y = x.toString();
var z = y.split("").reverse().join("");
var aa = Number(z);
document.write(aa);
var z
,作为一个string
,但我又转回了#。没有预料到1000。@alex在上面有一个解决方案。 - Jason Gennaro这里还有另一种方法...
var reversed = num.toString().split('').reverse().join('');
如果你想将其转换为Number
,请使用parseInt(reversed, 10)
。但要注意,前导的0
在十进制数中并不重要,如果你转换为Number
,它们将会丢失。
function myfunction(a){
var x=a.toString();
var y= x.split("");
var z=y.reverse();
var result=z.join("");
return result;
我的函数(123);
function reverseInt(n) {
return parseInt(n.toString().split('').reverse().join()) * Math.sign(n)
}
如果 n 是 -5,那么 Math.sign(n) ==> 将返回 -1
如果 n 是 5,那么 Math.sign(n) ==> 将返回 1
简单快捷的解决方案:假设您想翻转一个数字4546。您将从每个除以10的余数中获取并附加到结果,直到数字>0为止。同时通过将其除以10来更新num变量。
var x = '';
var num = 4546;
while(num>0){
x = x + (num%10);
num = parseInt(num/10);
}
console.log(x);
以下是处理整数或字符串的 JavaScript 可逆数组函数:
function reverse(array)
{
var left = null;
var right = null;
var length = array.length;
for (left = 0, right = length - 1; left < right; left += 1, right -= 1)
{
var temporary = array[left];
array[left] = array[right];
array[right] = temporary;
}
return array;
}
function toDigitsArrayFromInteger(integer, isReverse)
{
var digits = [];
if (integer > 0)
{
var floor = window.Math.floor;
while (integer > 0)
{
digits.push(floor(integer % 10));
integer = floor(integer / 10);
}
// Array is populated in reverse order. Un-reverse it to make it normal.
if (!isReverse)
{
digits = reverse(digits);
}
}
else if (integer < 0)
{
digits = toDigitsArrayFromInteger(-integer, isReverse);
}
else if (integer === 0)
{
digits.push(0);
}
return digits;
}
function toDigitsArrayFromString(string, isReverse)
{
var digits = [];
string += ""; // Coerce to string.
var i = null;
var length = string.length;
for (i = 0; i < length; i += 1)
{
var integer = parseInt(string.charAt(i), 10);
if (isFinite(integer))
{
digits.push(integer);
}
}
if (isReverse)
{
digits = reverse(digits);
}
return digits;
}
一旦你将数字作为数组获取,你可以轻松地反转数组以从左侧或右侧开始获取数字。
字符串函数更加灵活多变,因为它可以在字符串中查找任何数字,而整数函数仅限于整数。
Benchmarks: http://jsperf.com/todigitsarray
两个函数之间的基准测试表明,在Firefox 10和Chrome 12中,字符串函数比整数函数快30%至60%。在Opera 12中,整数函数略快约10%。//reverse integer
const revInt = (num)=>{
//turn into string
if(Math.sign(num)===1)
return parseInt(num.toString().split('').reverse().join(''));
else return -1*parseInt(num.toString().split('').reverse().join(''));
}
console.log(revInt(-501));
<html>
<script>
function reverseInt(n){
var r=0;
while(n!=0){
r*=10;
r+=n%10;
n=Math.floor(n/10);
}
return r;
}
</script>
</html>
这个函数以参数 Number
x 为输入,并返回倒序的数字。
const reverse = (x) => Number(x.toString().split("").reverse().join(""));