ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

二进制

2021-10-14 20:34:47  阅读:218  来源: 互联网

标签:反码 二进制 补码 0101 0000 原码


二进制

二进制逢二进一,每位的取值只能是0或1

原码、反码、补码

注:计算机里都是以补码的形式存储数据的!

原码:最高位为符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制(以一个字节(8位)为例)

​ 5 -5

原码:0000 0101 1000 0101

反码:正数的反码就是原码,负数的反码是对原码按位取反,只是最高位(符号位不变)。

​ 5 -5

原码:0000 0101 1000 0101

反码:0000 0101 1111 1010

补码:正数的补码与原码一致,负数的补码是该数的反码加一(对负数原码取反加一)

【补充】二进制相加:加运算:0+0=0,0+1=1,1+0=1,1+1=10。逢2进1

​ 5 -5

原码:0000 0101 1000 0101

反码:0000 0101 1111 1010

反码:0000 0101 1111 1011

知道补码求原码

1.正数的原码与原码相等

2.负数:补码减1,再取反就可以得到原码(最高位保持不变)

补码:1111 1011 反码:1111 1010 原码:1000 0101

计算机里都是以为什么以补码的形式存储数据的?

计算机CPU中有加法器,它会进行加法的计算,不存在减法器。如果要进行减法:

例: 5 - 5 ----> 5 + (-5)

image

进制转换:

1、八进制、十六进制与二进制之间的转换

八进制逢八进一,每一位的取值范围为0~7。若将二进制从低位到高位每3位组成一组(2^3=8),

每组值的大小是(000)2(111)2,即07,就可以把二进制转为八进制。

(100100001101)2 每三位得一组:(100,100,001,101)2 则可表示八进制(4415)8

十六进制逢十六进一,每一位的取值范围为015,其中,1015分别用A、B、C、D、E、F表示。若将二进制从低位到高位每4位组成一组(2^4=16),每组值的取值范围是(0000)2(1111)2,即015,就可以把二进制转为十六进制。

(100100001101)2 每四位得一组:(1001,0000,1101)2 则可表示八进制(90D)16

2、十进制转为其它进制

整数部分:除以基数逆序取余数至商为0为止

小数部分:乘于基数顺序取整数部分至(去掉整数后的)小数为0或达到需要的精度为止.

【十进制数转为二进制数】(十进制转为其它进制,相应的把2换为其它即可!)

#include<iostream>

using namespace std;
const int N = 100000+10;
int q[N];

int main()
{
	int n;
	cin>>n;
	
	int k = 0;
	while(n != 0)
	{
		q[k++] = n % 2;
		n = n / 2;
	}
	for(k--; k >= 0; k--) cout<<q[k];
	
	return 0;
}

标签:反码,二进制,补码,0101,0000,原码
来源: https://www.cnblogs.com/lwtyyds/p/15408321.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有