当前位置:网站首页>整型提昇和大小端字節序
整型提昇和大小端字節序
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
整型提昇的意義是怎樣的呢
边栏推荐
- 不会还有人只会用forEach遍历数组吧?
- Ape pink ape power - Developer activity attack!
- Xcode13.3.1 error reported after pod install
- Using pytorch and tensorflow to calculate the confusion matrix of classification model
- Sharing tips for efficient scripting
- No one can only use foreach to traverse arrays, right?
- ES9023音频解码芯片的工作原理
- What is webrtc?
- socke.io长连接实现推送、版本控制、实时活跃用户量统计
- 链表(三)——反转链表
猜你喜欢
借助nz-pagination中的let-total解析ng-template
How popular are FB and WhatsApp mass messages in 2022?
MySQL (I) - Installation
YYGH-6-微信登录
Yygh-6-wechat login
YYGH-7-用户管理
Difficulty calculation of Ethereum classic
AutoCAD C # Polyline Small Sharp angle Detection
What is the e-commerce conversion rate so abstract?
链表(三)——反转链表
随机推荐
idea创建类时自动添加注释
Sklearn Feature Engineering (summary)
Small ball playing
AutoCAD C# 多段线小锐角检测
Difficulty calculation of Ethereum classic
【Paper Reading-3D Detection】Fully Convolutional One-Stage 3D Object Detection on LiDAR Range Images
API learning of OpenGL (2006) glclientactivetexture
【Paper Reading-3D Detection】Fully Convolutional One-Stage 3D Object Detection on LiDAR Range Images
OpenSCAP 简介
bash install. SH ******** error
@Autowired注解为空的原因
Example of MVVM framework based on kotlin+jetpack
YYGH-BUG-02
D3D11_ Chili_ Tutorial (3): design a bindable/drawable system
How the third-party libraries in cocoapod reference local header files
ThreadLocal
MySQL common functions
mac下安装多个版本php并且进行管理
windows上安装redis并永久修改密码,及ssm框架集成redis
【无标题】