原码,反码,补码,大小端存储的一些理解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、原码
  • 二、反码
  • 三、补码
  • 四、浮点数的存储
  • 五、大小端存储
  • 总结


前言

随着c语言的进一步学习,我们会了解到数据在计算机是如何存放的,本文就是自己对它的一些看法。

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、原码

原码是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。

原码,反码,补码,大小端存储的一些理解_第1张图片

二、反码

反码是由原码符号位不变,其余位数取反(‘0’变为‘1’,‘1’变为‘0’)。

原码,反码,补码,大小端存储的一些理解_第2张图片

三、补码

在计算机中一般用补码来存储数据。正整数的补码是原码本身,而负数的补码是由反码+1。

原码,反码,补码,大小端存储的一些理解_第3张图片

四、浮点数的存取

浮点数分为一位符号位,八位指数位,剩下的为尾数位。

表示为:符号位(尾数位*2^指数位)

原码,反码,补码,大小端存储的一些理解_第4张图片

五、大小端 存储

在计算机存储数据时,由于编译器的不同,它存储使用的模式也就不同。

1.大端存储

大端存储就是高位放在低位置处低位放在高位置处。

定义一个变量i等于1;int i = 1;则在大端存储中的排序为:

原码,反码,补码,大小端存储的一些理解_第5张图片

2.小端存储

小端存储是高位放在低位置,低位放在高位置;

定义一个变量i为0;int i = 1;则在小端存储的方式为:

原码,反码,补码,大小端存储的一些理解_第6张图片

 3.大小端的判断

可以强制转换类型来判断,int i = 1;如果输出的是1的话则为小端,若输出为0的话就是大端。

#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
	int i = 1;
	char j = (char) i;
	printf("%d", j);
	return 0;
}

也可以使用移位操作符来判断,若输出0则为小端,否则为大端

#define _CRT_SECURE_NO_WARNINGS 1
#include

int main()
{
	int i = 1;
	int j = 0;
	j = i >> 1;
	printf("%d", j);
	return 0;
}

总结

正数的原码,反码,补码全相同,负数的反码由原码转换来(符号位不变,其余位取反),补码为反码+1。

你可能感兴趣的:(博客,c语言)