數據在內存中的存儲(整型篇)

1.辨析原碼反碼補碼:

? ? ? ? 1.原碼:有32位(int類四個字節,一個字節八個比特位),第一位是符號位,0正1負,其余為二進制位。

? ? ? ? 2.計算一般是對原碼進行計算,但在負數計算使用原碼會導致程序出錯,所以負數計算中使用反碼,反碼就是除了符號位,其余位置取反,反碼存在的原因就是負數的計算

? ? ? ? 3.雖然有了反碼,但遇到負數跨0比如-6+7=1的問題時無法解決,所以產生了補碼,補碼等于負數的反碼加1

2.正整數的原碼補碼反碼都相等,負數的原碼正常,反碼為第一位不變其余位按位取反,補碼位反碼加一

3.在整形存儲中一般以補碼的形式存在,因為這樣可以使符號位與數值位統一處理,加法和減肥都可以統一處理(cpu只有加法器),其運算過程是相同的不需要額外硬件

4.大端和小端:超過1字節的數據在存儲的時候就會存儲順序的問題,按照不同的存儲順序,分為大端字節序存儲和小端字節序存儲:

? ? ? ? 1.大端模式:數據的低位字節內容保存在內存的高地址處,數據的高位字節內容保存在內存的低地址處

? ? ? ? 2.小端模式:低位字節內容保存在內存的低地址處,高位字節內容保持在高地址處

5.大小端存在的原因:

6.判斷大小端的方法

7.例題:

析題:在內存中,數據儲存首先進行一個截斷操作,將變量補碼的后八位取出,然后會進行一個還原操作,會用符號位的數值將截斷碼補成32位,補充之后的碼繼續作為原碼。以‘%d'的形式打印,就是打印一個十進制有符號的整數,而操作對象是變量的補碼,a,b兩個變量的補碼的運算結果為-1,而c的補碼首位是0.所以它的補碼等于原碼等于它本身,所以是255

8.例題2:

析題:內存存儲

%u表示打印十進制無符號整型,上表表示了在內存中所有有符號字符型的存儲可能(8個字節),可以發現范圍是+127到-128,而中間的0000000會自動解析為128,無符號字符型的取值為0到255,

而無符號整型的補碼是它自己,直接把128的補碼的截斷補充的形式打印出來

9.例題3

答案是256,為啥?

析題:

char類型的整型范圍有以上規律,是一個閉合的環,而strlen函數就是找\0,而'\0'的asc碼值為0,就是找char 0的位置,按照上圖正好循環一圈,為255個數

10.例題4

析題:無符號整型也是一個閉環,0-1等于2的33次方-1(2的33次方減1然后加一為2的33次方,但int只能儲存2的32次方,所有按照截斷方法來看該值就是0),就是所有位都是1然后再減。

11.在強轉出現時,應先計算右側式子,然后再進行強轉

12.例題五

析題:

先假設數據的存儲是小端類型:

01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00

p1取的是數組的地址,加一代表指針指向了數組最后一個元素的后面,此時指針類型為數組指針,

此時將指針轉化為int*型,每次進行運算時移動四個字節,而p1[-1]代表向前移動四個字節,然后讀取,為4,而p2的運算,依據11,指向2的同時進行類型轉換為int類型,而轉換為int類型的同時編譯器會讀取向后的四位為一個數字2000000,前面的0不讀取,然后轉換為int*類型然后讀取打印,結果為2000000。
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214553.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214553.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214553.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

強化學習(二)——Dueling Network(DQN改進)

與DNQ相比,使用優勢函數(A函數)和狀態價值函數(V)代替之前的Q(動作價值)函數, 最核心公式為 Q ? ( s , a ) A ? ( s , a ) V ? ( s ) ? max ? a A ? ( s , a ) Q^*(s,a)A^*(s,a)V^*(s)-\max_a A^*(s,a) Q?(s,a)A?(s,a)V…

高效利用內存資源之動態內存管理詳解

目錄 一、為什么存在動態內存分配 二、動態內存函數的介紹 2.1malloc 2.2free 2.3calloc 2.4realloc 三、常見的動態內存錯誤 3.1對NULL指針的解引用操作 3.2對動態開辟空間的越界訪問 3.3對非動態開辟內存使用free釋放 3.4使用free釋放一塊動態開辟內存的一部分 3.…

Spring Boot 3 集成 Druid 連接池詳解

在現代的Java應用中,使用一個高效可靠的數據源是至關重要的。Druid連接池作為一款強大的數據庫連接池,提供了豐富的監控和管理功能,成為很多Java項目的首選。本文將詳細介紹如何在Spring Boot 3項目中配置數據源,集成Druid連接池&…

【ACM獨立出版、確定的ISBN號】第三屆密碼學、網絡安全和通信技術國際會議(CNSCT 2024)

第三屆密碼學、網絡安全和通信技術國際會議(CNSCT 2024) 2024 3rd International Conference on Cryptography, Network Security and Communication Technology 隨著互聯網和網絡應用的不斷發展,網絡安全在計算機科學中的地位越來越重要&…

Android Kotlin 泛型:強大的類型抽象和重用利器

一、什么是泛型? 泛型是一種參數化類型的機制,它允許我們在定義類、接口和方法時使用類型參數,從而實現代碼的重用和類型安全。通過使用泛型,我們可以將類型作為參數傳遞給類或方法,在不同的場景中實現靈活的類型適配…

精選:免費且高效的郵件營銷軟件推薦

好用的郵件營銷軟件可以幫助企業獲取客戶、維系客戶關系。對于有想做郵件營銷想法,但是想先試試的企業來講,免費版郵件營銷軟件就是個不錯的選擇。當然,免費的郵件郵件營銷軟件雖然在價格上有極大的優勢,但是功能上會有各種限制。…

Java生態系統最受歡迎的工具類使用指南 ?

???? 博主貓頭虎(????)帶您 Go to New World??? ?? 博客首頁——????貓頭虎的博客?? ?? 《面試題大全專欄》 ?? 文章圖文并茂??生動形象??簡單易學!歡迎大家來踩踩~?? ?? 《IDEA開發秘籍專欄》 ?? 學會IDEA常用操作,工作效率翻倍~?? ?…

【小白專用】MySQL查詢數據庫所有表名及表結構其注釋

一、先了解下INFORMATION_SCHEMA 1、在MySQL中,把INFORMATION_SCHEMA看作是一個數據庫,確切說是信息數據庫。其中保存著關于MySQL服務器所維護的所有其他數據庫的信息。如數據庫名,數據庫的表,表欄的數據類型與訪問權 限等。在INF…

網絡安全——SSH密碼攻擊實驗

一、實驗目的要求: 二、實驗設備與環境: 三、實驗原理: 四、實驗步驟:? 五、實驗現象、結果記錄及整理: 六、分析討論與思考題解答: 一、實驗目的要求: 1、了解SSH密碼攻擊、FTP密碼攻擊…

【BEV感知 EA-LSS 方案】Edge-aware Lift-splat-shot

前言 本文分享LSS方案的改進方案——EA-LSS,它解決了“深度跳變”問題,提出了一個新框架Edge-aware Lift-splat-shot 。 適用于“多視圖轉BEV”,可以代替原來的LSS模塊,并有效地提高了檢測精度,而推理時間的增加很少。 在nuScenes測試集上驗證,純相機模型或多模態模型…

Jmeter 請求簽名api接口-BeanShell

Jmeter 請求簽名api接口-BeanShell 項目簽名說明編譯擴展jar包jmeter 使用 BeanShell 調用jar包中的簽名方法 項目簽名說明 有簽名算法的api接口本地不好測試,使用BeanShell 擴展jar 包對參數進行簽名,接口簽名算法使用 sha512Hex 算法。簽名的說明如下…

Mybatis是如何進行分頁的?

程序員的公眾號:源1024,獲取更多資料,無加密無套路! 最近整理了一份大廠面試資料《史上最全大廠面試題》,Springboot、微服務、算法、數據結構、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、數據庫等等 …

Django系列之Celery異步框架+RabbitMQ使用

在Django項目中,如何集成使用Celery框架來完成一些異步任務以及定時任務呢? 1. 安裝 pip install celery # celery框架 pip install django-celery-beat # celery定時任務使用 pip install django-celery-results # celery存儲結果使用2. Django集成…

gin投票系統3

對應視頻v1版本 1.優化登陸接口 將同步改為異步 原login前端代碼&#xff1a; <!doctype html> <html lang"en"> <head><meta charset"utf-8"><title>香香編程-投票項目</title> </head> <body> <m…

開關量防抖濾波器(梯形圖和SCL源代碼)

模擬量防抖超限報警功能塊請查看下面文章鏈接: https://rxxw-control.blog.csdn.net/article/details/133969425https://rxxw-control.blog.csdn.net/article/details/133969425 1、開關量防抖濾波器 2、防抖濾波 3、梯形圖代碼

useMemo和useCallback

useMemo和useCallback是React中的兩個優化性能的鉤子&#xff08;Hooks&#xff09;。它們都可以用來緩存計算結果&#xff0c;避免在每次渲染時都重新執行耗時的操作。然而&#xff0c;它們的主要區別在于緩存的內容和使用場景。 useMemo useMemo用于緩存那些計算成本較高的值…

2.Feign使用、上下文隔離及源碼閱讀

目錄 概述使用配置pom.xmlfeign 接口編寫controller 測試降級處理pom.xmlapplication.yml代碼 Feign如何初始化及調用源碼閱讀初始化調用 feign的上下文隔離機制源碼 結束 概述 閱讀此文&#xff0c;可以知曉 feign 使用、上下文隔離及源碼閱讀。源碼涉及兩方面&#xff1a;fe…

課后作業7.3.1:構造一個自己的小操作系統

構造一個自己的 mini 操作系統 任務描述 請實現如下功能&#xff1a; 1.寫一個命令解釋器程序 mysh.c &#xff0c;其功能是接收用戶輸入的命令并給出反饋。要求該程序既支持內部命令 cd、sync、exit &#xff1b;也支持外部命令&#xff0c;即可以接收 cat、ls 等命令&#x…

數據結構與算法-Rust 版讀書筆記-2線性數據結構-雙端隊列

數據結構與算法-Rust 版讀書筆記-2線性數據結構-雙端隊列 1、雙端隊列 deque又稱為雙端隊列&#xff0c;雙端隊列是與隊列類似的項的有序集合。deque有兩個端部&#xff1a;首端和尾端。deque不同于隊列的地方就在于項的添加和刪除是不受限制的&#xff0c;既可以從首尾兩端添…

vue3封裝接口

在src下面創建一個文件夾任意名稱 我拿這個名字舉例子了apiService 相當于創建一個新的文件 // 封裝接口 // apiService.js import axios from axios;// 接口前綴 const API_BASE_URL 前綴;接口后綴export const registerUser async (fileData) > {try {const response …