栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言-数据的存储

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言-数据的存储

本篇博客用于记录自己c语言的学习心得,请大佬多多指教。

一、数据类型的分类

     (1)整形 (2)浮点型 (3)构造类型 (4)指针类型 (5)空类型

          

应该注意因为char中存储的是字符的ASCII码值 所以属于整形

各类型占据字节:

char-1 short-2 int-4 long-4/8 long long-8 float-4 double-8

其中long的大小是大于等于int的 32位平台4个字节 64位平台8个字节

二、整形在内存中的存储

1.原码 反码 补码

整形在计算机中有3种表示方式,三种表示方式均有符号位和数值位组成。正数的原、反、补码相同。负数的原、反、补码中首位表示符号,0表述整数,1表示负数。

原码:直接将整数按照正负数的形式翻译成2进制

反码:原码的符号位不变,其他位按位取反

补码:反码+1.

注意:反码要想得到补码有两种方法。第一种:补码先-1得反码,再符号位不变,其余位按位取反得原码。第二种:补码符号位不变,其余位按位取反,然后+1。既补码再求一次补码就是它的原码。(感觉很神奇,我也不知道原因,希望能有数学大佬解释)

数据在内存中按照反码的形式存储

2.大小端

大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址 中。

 小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地 址中。

通俗点,就是大端就是正常将数据存在内存中,小端是倒着存放。

#include 
int check_sys()
{
 int i = 1;
 return (*(char *)&i);
}
int main()
{
 int ret = check_sys();
 if(ret == 1)
 {
 printf("小端n");
 }
 else
 {
 printf("大端n");
 }
 return 0;
}

此代码可以检测编译器是大端存储还是小端存储。此代码的核心在于:

*(char *)&i;  i=1的补码是00000000  00000000  00000000  00000001

(char *)将1的地址强制转换为一个字节 在使用*取地址即只能取一位地址,如果是大端取的是0所以输出大端,小端则反之。

再来看这个代码会输出什么结果。

#include 
int main()
{
    char a= -1;
    signed char b=-1;
    unsigned char c=-1;
    printf("a=%d,b=%d,c=%d",a,b,c);
    return 0;
}

-1是整形原码:10000000 00000000 00000000 00000001

              反码:111111111 111111111 111111111 111111110

              补码:111111111 111111111 111111111 111111111

存入a中后                                                           111111111

因为a是char占据1个字节,int数据存入char变量 要进行截断,即保留1个字节,删除前面

发生截断会导致数据出现错误,因此自己写代码时要避免这种情况。

输出“a = %d”,以%d的形式输出a的值要进行整形提升,a是char型 有符号整形提升时首位是1前面就补1,首位是0就补0。如果是无符号型,则直接补0。

整型提升后:              11111111 11111111 111111111 11111111

此时为补码,变反码:11111111 11111111 111111111 11111110

原码:                          1000000 0000000 00000000 0000001

所以输出结果为-1

11点了,好困,b,c的过程不想再写了

今天就先总结到这里,希望大佬能指正我的错误,更欢迎其他初学者交流,谢谢啦!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/928145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号