網站首頁 編程語言 正文
一:整形
正常情況下
正數在內存中的存儲為補碼。
char a=30;
00011110(計算機中的存儲)
負數在內存中的存儲為補碼。
char a=-30;
10011110(原碼)
11100001(反碼)
11111011(計算機中的存儲)
注意的是當數據存在溢出的時候,會變成負數,如下圖。
int main() {
char a=130;
printf("%d",a);// -126
}
分析
10000010(計算機中的存儲)
特殊情況下
有符號
unsigned char c=-1;
解釋
10000001(機器碼)
111111110(反碼)
111111111(補碼,由于是無符號,符號變0,即01111111)
char c=-2;//4294967294
10000000 00000000 00000000 00000010(機器碼)
11111111 11111111 11111111 11111101(反碼)
11111111 11111111 11111111 11111110 (補碼,由于輸出的是無符號位,所以直接輸出,不需要轉化)
數據溢出()
正數(負數)
char a=129;
printf("%d",a);//-127
解釋
1000 0001(首先,會把129的機器碼作為補碼存儲在內存中)
1111 1111(減一求反得到原碼,然后輸出)
如果只有最高位為負數,則直接加負號
char a=-130;
解釋
1000 0010(首先,會把-130的機器碼作為補碼存儲在內存中)
1000 0001(減一)
0111 1110 2+4+8+16+32+64=126 (得到原碼)
補充
大端存儲:數據的低位保存在內存的高位中,而數據的高位保存在內存大地位中。
小端存儲:數據的低位保存在內存的高位中,而數據的高位保存在內存大地位中。
//設計一個小程序來判斷當前機器的字節序
Bool checkSys(){
int a=1;
return (*(char *)&i);
}
二:浮點型
根據國際標準IEEE(電氣和電子工程協會) 754,任意一個二進制浮點數V可以表示成下面的形式:
(-1) ^ S * M * 2 ^ E
其中:
- (-1) ^ S 表示符號位,當S=0,V為正數;當S=1,V為負數。
- M 表示有效數字,大于等于1,小于2。
- 2 ^ E 表示指數。
注:
1、這里的有效數字范圍是[1,2),可類比十進制中有效數字的范圍是[1,10)。
2、指數部分以2為底數,類比十進制中指數部分以10為底數。
例如十進制中的5.0,寫成二進制浮點數是101.0,用該形式表示就是(-1) ^ 0 * 1.01 * 2 ^ 2
(其中S = 0, M = 1.01, E = 2)
又如十進制中的-5.5,寫成二進制浮點數是101.1(此處小數點后的第一位權重是2 ^(-1),也就是0.5,所以此處是1),用該形式表示就是(-1) ^ 1 * 1.011 * 2 ^ 2
(其中S = 1, M = 1.011, E = 2)
E全為0時
由于E加上后127為全0,也就是說E的真實值為-127,即該浮點數指數部分是2 ^ (-127),顯然這是一個極小的數,此時有效數字M不再加上第一位的1,而是還原為以0為整數的小數。這樣做是為了表示±0,以及接近于0的很小的數字。
E全為1時
由于E加上后127為全1,也就是說E的真實值為128,即該浮點數指數部分是2 ^ (128),顯然這是一個極大的數,此時表示正負無窮大(正負號由S決定)
中以32位浮點數為例,64位浮點數同理
總結
原文鏈接:https://blog.csdn.net/qq_39109805/article/details/127619960
相關推薦
- 2022-09-18 詳解React?hooks組件通信方法_React
- 2022-04-10 【抖音小程序】抖音小程序避免onClose重復回調 解決廣告重復回調
- 2023-02-15 docker刪除拉取的鏡像釋放內存的操作方法_docker
- 2022-09-19 Pytorch實現LSTM案例總結學習_python
- 2022-05-22 云原生Kubernetes初始化容器Init使用教程_云其它
- 2022-04-20 超全整理visual?studio快捷鍵使用技巧_相關技巧
- 2022-07-15 Python中列表索引?A[?:?2?]與A[?:?,?2]的區別說明_python
- 2022-05-01 Python數據類型轉換匯總_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支