C语言数据存储
作者:互联网
基础单位
位
位是最基本的概念,它的英文名字叫(bit),是计算机中最基本的单位。只有逻辑0和逻辑1
字节
Byte,是由八个位组成的一个单元,也就是8个bit组成1个Byte。
一个字节最大的表示数据应该是111111,10进制表示就是255,16进制表示就是FF
基本数据类型
limits.h
#define _INC_LIMITS
#include <vcruntime.h>
#pragma warning(push)
#pragma warning(disable: _VCRUNTIME_disABLED_WARNINGS)
_CRT_BEGIN_C_HEADER
#define CHAR_BIT 8 //char类型的位数为8,1个字节
#define SCHAR_MIN (-128) //最小值
#define SCHAR_MAX 127 //最大值
#define UCHAR_MAX 0xff //
#ifndef _CHAR_UNSIGNED
#define CHAR_MIN SCHAR_MIN
#define CHAR_MAX SCHAR_MAX
#else
#define CHAR_MIN 0
#define CHAR_MAX UCHAR_MAX
#endif
#define MB_LEN_MAX 5
#define SHRT_MIN (-32768) //short类型的最小值
#define SHRT_MAX 32767 //short类型的最大值
#define USHRT_MAX 0xffff
#define INT_MIN (-2147483647 - 1) //int类型的最小值
#define INT_MAX 2147483647 //int类型的最大值
#define UINT_MAX 0xffffffff
#define LONG_MIN (-2147483647L - 1) //long类型的最小值
#define LONG_MAX 2147483647L //long类型的最大值
#define ULONG_MAX 0xffffffffUL
#define LLONG_MAX 9223372036854775807i64 //long long类型的最大值
#define LLONG_MIN (-9223372036854775807i64 - 1) //long long类型的最小值
#define ULLONG_MAX 0xffffffffffffffffui64
#define _I8_MIN (-127i8 - 1)
#define _I8_MAX 127i8
#define _UI8_MAX 0xffui8
#define _I16_MIN (-32767i16 - 1)
#define _I16_MAX 32767i16
#define _UI16_MAX 0xffffui16
#define _I32_MIN (-2147483647i32 - 1)
#define _I32_MAX 2147483647i32
#define _UI32_MAX 0xffffffffui32
#define _I64_MIN (-9223372036854775807i64 - 1)
#define _I64_MAX 9223372036854775807i64
#define _UI64_MAX 0xffffffffffffffffui64
#ifndef SIZE_MAX
// SIZE_MAX deFinition must match exactly with stdint.h for modules support.
#ifdef _WIN64
#define SIZE_MAX 0xffffffffffffffffui64
#else
#define SIZE_MAX 0xffffffffui32
#endif
#endif
#if __STDC_WANT_SECURE_LIB__
#ifndef RSIZE_MAX
#define RSIZE_MAX (SIZE_MAX >> 1)
#endif
#endif
_CRT_END_C_HEADER
#pragma warning(pop) // _VCRUNTIME_disABLED_WARNINGS
计算机的整型有符号数有三种表示方法,原码、反码、补码。
三种表示方法均有符号位和数值位两部分,符号位都是用“0”表示“正数”,用“1”表示“负数”;而数值位三种表示方法各不相同:
原码:
直接将二进制按照正负数的形式翻译成二进制就可以
反码:
将原码的符号位不变,数值位按位取反即可
补码:
反码+1即可
无符号位的整数原码、反码、补码相同;有符号位的整数原码、反码、补码不相同。