基础单位
位
位是最基本的概念,它的英文名字叫(bit),是计算机中最基本的单位。只有逻辑0和逻辑1
字节
Byte,是由八个位组成的一个单元,也就是8个bit组成1个Byte。
一个字节最大的表示数据应该是111111,10进制表示就是255,16进制表示就是FF
基本数据类型
limits.h
#pragma once
#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即可
无符号位的整数原码、反码、补码相同;有符号位的整数原码、反码、补码不相同。
int a=10;
原码:00000000 00000000 00000000 00001010
反码:00000000 00000000 00000000 00001010
补码:00000000 00000000 00000000 00001010
16进制:00 00 00 0a
小端模式:0a 00 00 00
大端模式:00 00 00 0a
int b=-10;
原码: 10000000 00000000 00000000 00001010
反码:11111111 11111111 11111111 11110101
补码:11111111 11111111 11111111 11110110
16进制: ff ff ff f6
小端模式:f6 ff ff ff
大端(存储)模式:
数据的低位保存在内存的高地址中;而数据的高位保存在内存的低地址中
小端(存储)模式:
数据的低位保存在内存的低地址中;而数据的高位保存在内存的高地址中
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。