本文概述
- C
- Java
- Python3
- C#
- 的PHP
- C ++
- Java
- Python3
- C#
- 的PHP
例子:
Input:12Output: 11Input:6Output: 5
方法1
要从数字x中减去1(例如0011001000), 请翻转最右边1位之后的所有位(我们得到001100
1
111)。最后, 也将最右边的1位翻转(我们得到0011000111)以获得答案。
C
// C code to subtract
// one from a given number
#include <
stdio.h>
int subtractOne( int x)
{
int m = 1;
// Flip all the set bits
// until we find a 1
while (!(x &
m)) {
x = x ^ m;
m <
<
= 1;
}// flip the rightmost 1 bit
x = x ^ m;
return x;
}/* Driver program to test above functions*/
int main()
{
printf ( "%d" , subtractOne(13));
return 0;
}
Java
// Java code to subtract
// one from a given number
import java.io.*;
class GFG
{
static int subtractOne( int x)
{
int m = 1 ;
// Flip all the set bits
// until we find a 1
while (!((x &
m) >
0 ))
{
x = x ^ m;
m <
<
= 1 ;
}// flip the rightmost
// 1 bit
x = x ^ m;
return x;
}// Driver Code
public static void main (String[] args)
{
System.out.println(subtractOne( 13 ));
}
}// This code is contributed
// by anuj_67.
Python3
# Python 3 code to subtract one from
# a given number
def subtractOne(x):
m = 1# Flip all the set bits
# until we find a 1
while ((x &
m) = = False ):
x = x ^ m
m = m <
<
1# flip the rightmost 1 bit
x = x ^ m
return x# Driver Code
if __name__ = = '__main__' :
print (subtractOne( 13 ))# This code is contributed by
# Surendra_Gangwar
C#
// C# code to subtract
// one from a given number
using System;
class GFG
{
static int subtractOne( int x)
{
int m = 1;
// Flip all the set bits
// until we find a 1
while (!((x &
m) >
0))
{
x = x ^ m;
m <
<
= 1;
}// flip the rightmost
// 1 bit
x = x ^ m;
return x;
}// Driver Code
public static void Main ()
{
Console.WriteLine(subtractOne(13));
}
}// This code is contributed
// by anuj_67.
的PHP
<
?php
// PHP code to subtract
// one from a given numberfunction subtractOne( $x )
{
$m = 1;
// Flip all the set bits
// until we find a 1
while (!( $x &
$m ))
{
$x = $x ^ $m ;
$m <
<
= 1;
}// flip the
// rightmost 1 bit
$x = $x ^ $m ;
return $x ;
}// Driver Code
echo subtractOne(13);
// This code is contributed
// by anuj_67.
?>
输出如下:
12
方法2(如果允许+)
我们知道, 在大多数架构中, 负数都以2的补码形式表示。对于带符号的数字的2的补码表示, 我们具有以下引理。
假设x是数字的数值, 则
?x =-(x + 1)[?用于按位补码]
两侧加2倍,
2x +?x = x – 1
要获得2x, 请向左移x一次。
C ++
#include <
stdio.h>
int subtractOne( int x)
{
return ((x <
<
1) + (~x));
}/* Driver program to test above functions*/
int main()
{
printf ( "%d" , subtractOne(13));
return 0;
}
Java
class GFG
{static int subtractOne( int x)
{
return ((x <
<
1 ) + (~x));
}/* Driver code*/
public static void main(String[] args)
{
System.out.printf( "%d" , subtractOne( 13 ));
}
}// This code has been contributed by 29AjayKumar
Python3
def subtractOne(x):return ((x <
<
1 ) + (~x));
# Driver code
print (subtractOne( 13 ));
# This code is contributed by mits
C#
using System;
class GFG
{static int subtractOne( int x)
{
return ((x <
<
1) + (~x));
}/* Driver code*/
public static void Main(String[] args)
{
Console.Write( "{0}" , subtractOne(13));
}
}// This code contributed by Rajput-Ji
的PHP
<
?php
function subtractOne( $x )
{
return (( $x <
<
1) + (~ $x ));
}/* Driver code*/print (subtractOne(13));
// This code has been contributed by mits
?>
【算法设计(如何实现不带算术运算符的减法1)】输出如下:
12
推荐阅读
- 使用CSS更改HTML5输入的占位符颜色
- AngularJS 事件介绍和用法详细介绍
- PHP Ds Deque apply()函数用法介绍
- 如何使用JavaScript切换布尔值()
- 使用Java中的正则表达式获取字符串中每个单词的首字母
- 算法(一个检查字符串是否相互旋转的程序)
- 如何使用Python和其他语言为变量赋值
- JavaScript 严格模式解析和使用示例
- 5步骤简单处理XP系统响应速度慢