整形在内存中的存储方式是以二进制补码的方式存储
原码 直接将二进制按照正负数的形式翻译成二进制就可以。
反码 将原码的符号位不变,其他位依次按位取反就可以得到了。
补码 反码+1就得到补码。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
char a = -1;
signed char b = -1;
unsigned char c = -1;
printf("%d %d %d", a, b, c);
return 0;
}
有符号数是一半正一半负,而无符号数是全正
unsigned char 可存储数据的范围: 0 ~ 255
char(signed char)可存储数据的范围:-128 ~ 127
大端,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中。
小端,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。
比如说,16进制的11223344在大端的储存中是44332211,而在小端中还是11223344.
浮点数的存储
存储规则:
任意一个二进制浮点数V,都可以被保存为以下形式:
( -1 )^S * M * 2^E
一、(-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。
二、M表示有效数字,大于等于1,小于2。写成1.xxxxxxx形式
三、2^E表示指数位。
float32位的第一个bit位是符号位再八bit位是指数位后23位是有效数字
double64位的第一个bit位是符号位再11位是指数位后52位是有效数字
当指数位的数是全1时数为无穷大,为全0时就为无穷小接近0
1,0都有是正常的