⭐️ 关键字深度剖析 ⭐️第三章(关键字sizeof\signed\unsigned&原反补\数据范围)(一)

简介: 本文主要讲解点关键字sizeof的理解关键字signed\unsigned的理解掌握原反补概念深刻理解数据的取值范围

关键字-sizeof


  • 定义

用来确定一种类型对应在开辟空间的时候的大小(对内置字符和自定义数组是可求的)

注:不要将sizeof误认为函数,虽然sizeof带有(),但是sizeof是操作符,关键字

  • 示例
 int a=10;
 printf("%d\n", sizeof(a));
 printf("%d\n", sizeof(int));
 printf("%d\n", sizeof a);//这样写行不行?  可以
//得到的结果和sizeof(a)一致,说明sizeof并不是函数
 printf("%d\n", sizeof int);//err 求类型大小必须带上()
  • 与数组结合
int arr[3] = {1,2,3} 
sizeof(arr) 结果为12(arr表示整个数组) 
sizeof(arr+0)//或者sizeof(arr[0]) 结果为4(表示首元素地址)
//所有的地址大小为4(32位平台)/8(64位平台)

关键字-signed\unsigned


有符号数vs无符号数

char //字符数据类型
    unsigned char      //signed(有符号)/unsigned(无符号)
    signed char
//大多数编译器默认char为 signed char 即有符号类型(有的认为是unsigned char)
//对于 short int long 都认为是有符号类型
short //短整型
    unsigned short 
    signed short 
int //整形
    unsigned int
    signed int
long //长整型
    unsigned long 
    signed long

整形在内存的存储

变量的创建会在内存中开辟空间,而空间的大小根据类型来决定

原码、反码、补码

数据的表示有原码、反码和补码三种方法,均有符号位和数值位

符号位都是用0表示“正”,用1表示“负”(符号位依旧符合二进制运算)

  • 有符号数
  • 正整数

原、反、补码都相同

  • 负整数

原码:直接将二进制按照正负数的形式翻译成二进制就可以

反码:将原码的符号位不变,其他位依次按位取反就可以得到了

补码:反码+1就得到补码

  • 无符号数

不需要转化,也不需要符号位,原反补相同

  • 对于整形来说

数据存放内存中其实存放的是补码

而数据的读取是使用原码

  • 示例:
//字面值转补码 
int a = 20; 
//20是正整数 
//原反补:0000 0000 0000 0000 0000 0000 0001 0100 
int b = -10;
 //-10是正整数 
//原:1000 0000 0000 0000 0000 0000 0000 1010 
//反:1111 1111 1111 1111 1111 1111 1111 0101 
//补:1111 1111 1111 1111 1111 1111 1111 0110 
//补码转源码 
方法一:先-1,在符号位不变,按位取反
方法二:将原码到补码的过程在来一遍

20210809223548952.png


十进制和二进制转换

口诀:1后面跟n0,就是2n次方v


相关文章
|
5月前
|
存储 C语言
C语言学习记录——复习数据存储类别(auto、register、static、extern)
C语言学习记录——复习数据存储类别(auto、register、static、extern)
42 1
|
6月前
|
编译器 C语言 C++
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr(下)
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr
47 0
|
6月前
|
存储 安全 编译器
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr(上)
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr
47 0
|
存储 编译器 C语言
C语言进阶教程(再论struct,union,enum)
C语言进阶教程(再论struct,union,enum)
85 0
|
存储 编译器 C语言
c语言复习之结构体、联合、枚举(十二)
c语言复习之结构体、联合、枚举(十二)
蓝桥杯小技巧之巧用bit类型定义变量
蓝桥杯小技巧之巧用bit类型定义变量
82 0
|
存储 C语言
(关键字,Static,typedef)-C语言笔记
(关键字,Static,typedef)-C语言笔记
151 0
(关键字,Static,typedef)-C语言笔记
|
存储 编译器
⭐️ 关键字深度剖析 ⭐️第三章(关键字sizeof\signed\unsigned&原反补\数据范围)(二)
本文主要讲解点 关键字sizeof的理解 关键字signed\unsigned的理解 掌握原反补概念 深刻理解数据的取值范围
⭐️ 关键字深度剖析 ⭐️第三章(关键字sizeof\signed\unsigned&原反补\数据范围)(二)
|
存储 C语言
⭐️ 关键字深度剖析 ⭐️第五章(深入C语言三种类型(float/bool/指针)与“零值“的比较)(续)
浮点数在内存中存储,并不想我们想的是完整存储的 在十进制转化成为二进制,是有可能有精度损失的
⭐️ 关键字深度剖析 ⭐️第五章(深入C语言三种类型(float/bool/指针)与“零值“的比较)(续)
|
存储 编译器 C语言
⭐️ 关键字深度剖析 ⭐️第五章(深入C语言三种类型(float/bool/指针)与“零值“的比较)
浮点数在内存中存储,并不想我们想的是完整存储的 在十进制转化成为二进制,是有可能有精度损失的
⭐️ 关键字深度剖析 ⭐️第五章(深入C语言三种类型(float/bool/指针)与“零值“的比较)