ProDeveloperTutorial.com

教程和编程解决方案
菜单
  • Shell脚本
  • 系统设计
  • Linux系统编程
  • 4g LTE
  • 编码问题
  • C
  • C ++
  • DSA
  • GIT

1和2的二进制补码

前开发者教程 二月15,2019

给定二进制数,请返回该数字的1和2的补码。

在进行编程之前,我们将研究如何获取给定二进制数的1和2的补码。

1的补语:

1的补码是通过翻转所有位来实现的。

例:

原始值1的补码
0 1
1 0
1100 0011
1111 0000

2的补码:

通过在二进制数的1的补码上加1,我们得到2的补码。

2的补数= 1的补数+ 1;

2的补码特别重要,因为它用于表示二进制的有符号(-ve)数字。正数按原样存储,但负数将以2的补数存储。

例:

原始值1的补语2的补语

10011001 01100110 +1 = 01100111

那么2的补码如何用于表示–ve数?

例如,我们采用-5以二进制格式表示它。

将5转换为二进制格式“ 00000101”
1的补码为“ 11111010”,然后为2的补码添加“ 1”。
2的补码“ 11111011”
要将其重新计算为十进制:
-128 + 64 + 32 + 16 + 8 + 2 +1 = -5

好的,现在回到我们的问题:

为了得到1的补码,我们将位翻转。

要获得2'c补码,请将所有1都翻转为0,直到遇到第一个0,然后再将0翻转为1。

例:

二进制数是1100

那么1的补码就是0011

对于2的补码:

步骤1:将所有1翻转为0,即:“ 0000”
步骤2:然后将第一个出现的0翻转为1,因为“ 0100”为2的补码。
注意:第一次出现0的是索引1的补码3。

C ++解决方案

/*
* File     : 上 es_twos_complement.cpp
* Contact   : [email protected]
* Website: @ 前开发者教程.com
*/

#include<iostream>
#include<vector>
#include<string>

using namespace std;

char flip(char c)
{
	if(c == '0')
		return '1';
	else
		return '0';
}

void get_ones_twos_complement(string str)
{
	int len = str.size();

	string 上 es ;
	string twos ;

	for(int i = 0; i <len; i++ )
	{
		ones += flip(str[i]);
	}
	cout << "1's complement: " << 上 es << endl; 

	twos = 上 es;
	int i = 0;
	for ( i = len - 1; i > 0; i--)
	{
		if(ones[i] == '1')
			twos[i] = '0';
		else
		{
			twos[i] = '1';
			break;
		}

	}

	// This case is used to handle situations like "1111"
	// we add extra "1" 上  the left side
	if (i == -1)
		twos = '1'+twos;
	cout << "2's complement: " << twos << endl; 

}

int main()
{
	string binary = "1100";
	cout<<"Original binary number = "<<binary<<endl;
	get_ones_twos_complement(binary);

	return 0;
}

输出:

Original binary number = 1100
1's complement: 0011
2's complement: 0100

 

 

该网站上可用的教程列表:

C编程20+章C ++编程80+章
100多个编码问题数据结构和算法85+章
系统设计20+章Shell脚本编写12章
4g LTE 60+章节最常见的编码问题
5G NR 50+章Linux系统编程20+章
分享
电子邮件
鸣叫
领英
Reddit
绊倒
Pinterest的
上一篇文章
下一篇

关于作者

前开发者教程

每天我们都会讨论竞争性编程问题,请加入我们的网站:   电报频道

ProDeveloperTutorial.com

教程和编程解决方案
版权© 2020 ProDeveloperTutorial.com
从以下课程获得热门课程: 教育性的





      <legend class="NCUXDol"><caption id="HOLrynm" class="HZ9CKKi"><td id="mkSTjat"><sup class="xeQULc4"></sup></td></caption></legend>