当前位置:网站首页>整型提升和大小端字节序
整型提升和大小端字节序
2022-06-28 06:12:00 【花海ovo】
以一个整形类型的数字1为例 他的二进制表示为
000000000000000000000000000000001;
而在计算机储存当中 他的数据保存为十六进制,即
0x 00 00 00 01
从左到右为数据的高位到低位,而计算机中的内存也对应着高内存到低内存,那么便有了大小端字节序的概念
大端字节序:指数据的高位保存在低地址处,数据的低位保存在高地址处
小端字节序:指数据的高位保存在高地址处,数据的低位保存在低地址处
那么我们如何判断我们所使用的vs在存储数据的时候是使用大端字节序还是小端字节序呢,我们可以创建一个char类型的指针指向整型类型的数字1,因为char*只能从高到低访问一个字节,所以我们便可以通过char指针访问1的第一个字节,对他解应用看看他是0还是1,从而判断它存储的大小端
代码如下:
char*p=NULL;//初始化指针
int a=1;
p=&a;//p指向a中的一个字节
if(*p)
printf("是大端");
else
printf("是小端");
//看看p解应用后访问的a中具体字节
那什么是整型提升呢
我们来看一段代码
int main(){
char a=-1;
signed char b=-1;
unsigned char c=-1;
printf("%d %d %d",a,b,c);那么a,b,c的结果分别是多少呢;
我们知道,数字在内存中是以补码的形式储存起来的 -1的原码为
10000000 00000000 000000000 00000001
除了符号位也就是最高位以外按位取反 得到反码;
11111111 11111111 11111111 11111110;
反码加一得到补码
11111111 11111111 11111111 11111111;
然而char类型只能存储一个字节 所以会发生截断 取低位的一个字节 即
11111111
使用a进行计算或者以%d输出a的时候会进行整型提升看一个字节中最高位;若为1则前面加上三个比特位全为1jiayi的字节;最高位为0则前面补0
现在为11111111 最高位为1 故补完以后为
11111111 11111111 11111111 11111111为补码
再将它加一取反得到源码并输出 结果为-1;
同理 b和a一样也是会发生整型提升;char类型默认就是有符号的signed char;
而unsigned char 不会这样,因为定义时时将它设置为无符号字符型的 所以它认为被截取的最高位不是符号位而是数字位 所以整型提升时前面全补零
即用%d输出c时候会被提升为
00000000 00000000 00000000 11111111
最高位符号位为零 所以是正数 正数的原反补码都相同 所以直接输出为256
整型提升的意义是怎样的呢

边栏推荐
- What is webrtc?
- 链表(三)——反转链表
- Mosaic data enhanced mosaic
- ThreadLocal
- AutoCAD C# 多段线自相交检测
- [untitled]
- @Autowired注解为空的原因
- Drop down list processing in Web Automation
- pytorch dataloader的长度 epoch与iteration的区别
- Lombok @equalsandhashcode annotation how to make objects The equals () method compares only some attributes
猜你喜欢

Apple MDM bypass jailfree bypass MDM configuration lock free

Unity packaging webgl uses IIS to solve the error

Jenkins continuous integration 1

YYGH-BUG-03

socke.io長連接實現推送、版本控制、實時活躍用戶量統計

Small ball playing

Example of MVVM framework based on kotlin+jetpack

AutoCAD C polyline small acute angle detection

Install and manage multiple versions of PHP under mac

链表(二)——设计链表
随机推荐
Scripting and programming languages
How popular are FB and WhatsApp mass messages in 2022?
Working principle of es9023 audio decoding chip
自定义 cube-ui 弹出框dialog支持多个且多种类型的input框
Yygh-6-wechat login
Yygh-8-appointment registration
pytorch dataloader的长度 epoch与iteration的区别
Parsing ng template with let total in NZ Pagination
ThreadLocal
Difficulty calculation of Ethereum classic
ROS rviz_ Satellite function package visualizes GNSS track and uses satellite map
windows上安装redis并永久修改密码,及ssm框架集成redis
Maskrcnn, fast RCNN, fast RCNN excellent video
Enum
easyui下拉框选中触发事件
mysql常用函数
Configure redis from 0
Development trend of mobile advertising: Leveraging stock and fine marketing
No one can only use foreach to traverse arrays, right?
基于Kotlin+JetPack实现的MVVM框架的示例