數據類型及sizeof,進制轉換

其實數據類型可以講很多內容,這里看情況需要講多久吧。

本篇基本都是理論。

目錄

數據類型的分類

基本數據類型

構造數據類型

指針類型

空類型

計算數據類型或變量所占用的內存字節數

基本語法

進制轉換

二進制

二進制的概念

二進制與十進制的轉換

十六進制

十六進制的概念

二進制與十六進制的轉換

小結


數據類型的分類

在靈氣運轉的變量詳解(下)和scanf法術中我們第一次提到了數據類型這個概念,數據類型是定義變量或函數的存儲類型和操作方式。

數據類型可以簡單的分為以下四類。

基本數據類型

整數類型

在計算機中最小的存儲單位是位(bit),而一個字節(byte)通常由8個二進制位組成。每個二進制位可以表示0或1。

前文中我們常常提到的int就是整型,如果按從小到大來的話:

  • char : 通常占用 1 個字節(8bit)內存空間。它既能存儲字符,也能存儲小整數。字符在計算機中以 ASCII 碼形式存儲,如
#include <stdio.h>
int main() {char a = 'A';printf("ASCII碼值: %d\n", a);return 0;
}

?這里輸出的結果是65,因為A的ASCII碼值就是65。

ASCII是一種基于7位二進制編碼的字符編碼系統,主要用于表示英文字母、數字、標點符號和控制字符等,總共可以表示128個不同的字符?。

圖源網絡,侵權刪?

  • short :?短整型,一般占 2 個字節
  • int :?整型,在多數系統中占 4 個字節
  • long :?長整型,在 32 位系統通常占 4 個字節,64 位系統一般占 8 個字節
  • long long :?更長的長整型,至少占 8 個字節

浮點類型

  • float :單精度浮點型,占 4 個字節,精度約為 6 - 7 位有效數字,用于存儲小數
  • double :雙精度浮點型,占 8 個字節,精度約為 15 - 16 位有效數字,比float更精確
  • long double :長雙精度浮點型,占用字節數因編譯器和系統而異,精度比double更高

構造數據類型

構造數據類型由基本數據類型其他構造數據類型組合而成。

  • 數組 :一組相同類型元素的有序集合,元素在內存中連續存儲
  • 結構體 :用戶自定義的數據類型,可包含不同類型的數據成員,將相關數據組合在一起
  • 聯合體 :所有成員共享同一塊內存空間,同一時間只能使用一個成員
  • 枚舉類型 :定義一組命名的整數常量,增強代碼可讀性

指針類型

這個之后會詳細講到有關于指針的。

  • 指針存儲的是變量的內存地址,通過指針可直接訪問和修改內存中的數據

空類型

void表示,有以下用途:

  • 函數返回值為空:函數不需要返回值時,使用void作為返回類型
  • 函數參數為空:函數不接受參數時,使用void作為參數列表
  • 通用指針:void *類型指針可指向任意類型數據,使用時需強制類型轉換

計算數據類型或變量所占用的內存字節數

sizeof用于計算數據類型或變量所占用的內存字節數。

基本語法

計算數據類型的大小

sizeof(數據類型);

如:

#include <stdio.h>int main() {printf("sizeof(int)= %ld\n", sizeof(int));return 0;
}

輸出的結果為??

可能有些人的程序輸出的結果不是4,那是因為有的是64位機有的是32位機。

  • 32位:是計算機處理器(CPU)能夠一次處理或傳輸的數據寬度為32位
  • 64位:是計算機處理器(CPU)能夠一次處理或傳輸的數據寬度為64位

進制轉換

上文講了位,存儲等。我們來學習下進制的轉換:

在日常生活里,十進制是最為常用的計數方式,不過在計算機領域,二進制和十六進制是比較常見的。下面來學習二進制、十進制、十六進制這三個進制之間的轉換。

二進制

二進制的概念

  • 在計算機中,二進制用于表示數據和指令。二進制只有0和1兩個數碼,代表的是電子元件的開和關的兩種狀態。進位規則是 “逢二進一”,借位規則是 “借一當二”。

二進制與十進制的轉換

二進制 -> 十進制

  • 將二進制數的每一位乘以2的相應冪次(冪次從右往左依次為0、1、2... ...),然后將結果相加。這次常用的逐位相加法。
  • B是二進制的英文縮寫,D是十進制的英文縮寫

如,11010B -> D

= 0 * 2^0 + 1 * 2^1 + 0 * 2^3 + 1 * 2^4 + 1 * 2^5?

= 0 + 2 + 0 + 8 + 16

= 26

十進制 -> 二進制

  • 把十進制轉換為二進制可以采取除2取余的方法,簡單來說就是:除二取余直至商0。再將余數倒序排列就得到對應的十進制數。

如,26D -> B

  1. 26 / 2 = 13,余為0
  2. 13 / 2 = 6,余為1
  3. 6 / 2 = 3,余為0
  4. 3 / 2 = 1,余為1
  5. 1 / 2 = 0,余為1

然后將余數從下向上排得到11010B。

十六進制

十六進制的概念

  • 十六進制是一種基數為16的計數系統,它使用 0 - 9 十個數字和 A - F六個字母來表示 10 - 15 這六個數字
  • 十六進制在計算機領域常用于表示內存地址、顏色值等。它可以很方便與二進制進行轉換,每4位二進制數可以用1位十六進制表示

二進制與十六進制的轉換

二進制 -> 十六進制

  • 從二進制數的最右邊(低位)開始,每4位分為一組。如果最左邊(高位)的一組不足4位,則在左邊補0
  • 將二進制轉十六進制,組合結果
  • 十六進制可以用H表示

如,11010B -> H

  1. 分組,0001和1010
  2. 0001B轉換為十進制為1,在十六進制中對應的是1;1010B轉換為10,在十六進制中,10為A
  3. 組合結果為1A

十六進制 -> 二進制

  • 拆分十六進制數
  • 將每個十六進制數字轉換為4位二進制數
  • 組合二進制數

如1A H -> B

  1. 拆分為1和A
  2. 1對應的二進制是0001,A對應的十進制是10,對應的二進制是1010
  3. 組合0001 1010,一般省略前面的0
  4. 結果為11010

小結

系統的學習了計算機的數據類型以及sizeof運算符;還有二進制、十六進制,以及這些進制之間的轉換。

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

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

相關文章

pjsip dtmf發送和接收(pjsua)

DTMF(雙音多頻,Dual-Tone Multi-Frequency)是一種用于電話系統的信號技術,通過組合兩個不同頻率的音頻信號來表示數字和符號。以下是DTMF的主要使用背景和應用場景: 電話撥號 DTMF最常見的用途是電話撥號。當用戶按下電話鍵盤上的數字或符號時,電話會生成兩個特定頻率的音…

落雪音樂Pro 8.8.6 | 內置8條音源,無需手動導入,純凈無廣告

洛雪音樂Pro版內置多組穩定音源接口&#xff0c;省去手動導入的繁瑣操作&#xff0c;安裝即可暢聽海量音樂。延續原版無廣告的純凈體驗&#xff0c;支持歌單推薦與音源切換&#xff0c;滿足個性化聽歌需求。此版本僅支持在線播放&#xff0c;無法下載音樂&#xff0c;且與原版不…

mac安裝navicat及使用

0.刪除舊的 sudo rm -Rf /Applications/Navicat\ Premium.app sudo rm -Rf /private/var/db/BootCaches/CB6F12B3-2C14-461E-B5A7-A8621B7FF130/app.com.prect.NavicatPremium.playlist sudo rm -Rf ~/Library/Caches/com.apple.helpd/SDMHelpData/Other/English/HelpSDMIndexF…

【Unity】 HTFramework框架(六十二)Agent編輯器通用智能體(AI Agent)

更新日期&#xff1a;2025年3月14日。 Github源碼&#xff1a;[點我獲取源碼] Gitee源碼&#xff1a;[點我獲取源碼] 索引 編輯器通用智能體AIAgent類Friday&#xff08;星期五&#xff09;啟用智能體設置智能體類型開放智能體權限智能體交互資源優化批處理運行代碼聯網搜索休閑…

EverArt MCP 服務器安裝調試筆記 -cline

EverArt MCP 服務器安裝調試筆記 問題描述 用戶在使用 EverArt MCP 服務器時遇到報錯&#xff1a;“MCP error -1: Connection closed”。 調試過程 檢查配置文件 cline_mcp_settings.json: 確認 everart 服務器的配置信息&#xff0c;包括 command、args 和 env 是否正確。…

MFC中使用Create或CreateDialog創建對話框失敗,GetLastError錯誤碼為1813(找不到映像文件中指定的資源類型)

文章目錄 創建對話框失敗示例、原因分析及解決方案示例代碼錯誤原因解決方案 AFX_MANAGE_STATE(AfxGetStaticModuleState())作用一、功能1. 模塊狀態切換2. 自動狀態恢復 二、為什么要用該函數&#xff1f;三、必須使用該宏的典型場景1. MFC 擴展 DLL&#xff08;Extension DLL…

php進程管理

php-fpm(fastcgi process manager)是PHP 的FastCGI管理器&#xff0c;管理PHP的FastCGI進程&#xff0c;提升PHP應用的性能和穩定性 php-fpm是一個高性能的php FastCGI管理器&#xff0c;提供了更好的php進程管理方式&#xff0c;可以有效的控制內存和進程&#xff0c;支持平滑…

《MySQL數據庫從零搭建到高效管理|表的增刪改查(基礎)》

目錄 引言&#xff1a; 一、表的操作 1.1 創建學生表 1.2 查看表結構 1.3 刪除表 1.4 修改表名 1.5 添加字段 1.6 修改字段 1.7 刪除字段 1.8 小結 二、CRUD 2.1 新增&#xff08;Create&#xff09;數據 2.2 查詢&#xff08;Retrieve&#xff09;數據 2.3 修改&…

建筑管理(2): 施工承包模式,工程監理,質量監督

文章目錄 一. 施工承包模式1. 施工總承包模式1.1 施工總承包的特點1.2 施工總承包模式中的承包方 2. 平行承包模式3. 聯合體與合作體承包模式 二. 工程監理1. 強制實行監理的工程范圍1.1 國家重點建設工程1.2 大中型公用事業工程(重點)1.3 成片開發建設的住宅小區工程1.4 必須實…

Spring Boot與Apache Ignite集成:構建高性能分布式緩存和計算平臺

1. 前言 1.1 什么是Apache Ignite Apache Ignite是一個高性能的分布式內存計算平臺,支持內存緩存、分布式計算、流處理和機器學習等功能。它提供了低延遲的數據訪問和強大的計算能力,適用于需要高性能和可擴展性的應用。 1.2 為什么選擇Apache Ignite 高性能:Ignite利用內…

REST 請求返回 Invalid Credentials

REST 請求返回 “Invalid Credentials”&#xff08;無效憑據&#xff09;&#xff0c;通常表示身份驗證失敗。可能的原因和解決方案如下&#xff1a; 可能的原因 & 解決方案 用戶名或密碼錯誤 確保使用正確的用戶名和密碼。如果 API 需要 Base64 編碼的 Authorization 頭…

C++Primer學習(6.7 函數指針——難!)

6.7 函數指針 (這一章節比較難) 函數指針指向的是函數而非對象。和其他指針一樣&#xff0c;函數指針指向某種特定類型。函數的類型由它的返回類型和形參類型共同決定&#xff0c;與函數名無關。例如: //比較兩個 string 對象的長度 bool lengthCompare(const string &,co…

高級java每日一道面試題-2025年2月26日-框架篇[Mybatis篇]-Mybatis是如何將sql執行結果封裝為目標對象并返回的?都有哪些映射形式 ?

如果有遺漏,評論區告訴我進行補充 面試官: Mybatis是如何將sql執行結果封裝為目標對象并返回的?都有哪些映射形式 ? 我回答: 在Java高級面試中討論MyBatis如何將SQL執行結果封裝為目標對象并返回的過程時&#xff0c;我們可以從過程細節和映射形式兩個方面來綜合解答這個問…

react(一):特點-基本使用-JSX語法

初識React React是一個用于構建用戶界面的 JavaScript 庫&#xff0c;由 Facebook 開發和維護。 官網文檔&#xff1a;React 官方中文文檔 特點 1.聲明式編程 2.組件化開發 3.多平臺適配 開發依賴 開發React必須依賴三個庫&#xff1a; 1.react&#xff1a;包含react所必…

【Python+HTTP接口】POST請求不同請求頭構造

1、{‘Content-Type’: ‘application/json’} import requestsbody {"name1": "value1","name2": "value2"} requests.post(urlurl, databody)2、{“Content-Type”: “application/x-www-form-urlencoded; charsetUTF-8”} impor…

Java常用API:String與ArrayList的設計哲學與實踐應用

在Java編程中&#xff0c;API&#xff08;應用程序編程接口&#xff09;是開發者最強大的工具之一。它們封裝了復雜的底層邏輯&#xff0c;提供了簡潔的調用方式。本文將聚焦Java中兩個最常用的API——String和ArrayList&#xff0c;從底層原理到實際應用&#xff0c;結合深度思…

Python的字符串優雅優化策略:特定編碼 -> Unicode碼點 -> UTF-8(可自定義)

Python利用唯一uni-pot中介打理&#xff0c;任意制式輸出&#xff08;首選uyf-8&#xff09;。 筆記模板由python腳本于2025-03-14 23:37:04創建&#xff0c;本篇筆記適合喜歡探究字符串編碼細節的coder翻閱。 【學習的細節是歡悅的歷程】 博客的核心價值&#xff1a;在于輸出思…

linux 時間同步(阿里云ntp服務器)

1、安裝ntp服務 rootlocalhost ~]# yum -y install ntp 已加載插件&#xff1a;fastestmirror, langpacks Loading mirror speeds from cached hostfile* base: mirrors.nju.edu.cn* centos-sclo-rh: mirrors.nju.edu.cn* centos-sclo-sclo: mirrors.huaweicloud.com* epel: m…

虛擬化數據恢復—重裝系統服務器崩了的數據恢復過程

虛擬化數據恢復環境&故障&#xff1a; VMware虛擬化平臺 vmfs文件系統 工作人員誤操作重裝操作系統&#xff0c;服務器崩潰。 重裝系統會導致文件系統元文件被覆蓋。要恢復數據&#xff0c;必須找到&提取重裝系統前的文件系統殘留信息&#xff0c;通過提取出來的元文件…

微信開發者工具內建終端使用不了npm,但是cmd可以

下載cnpm并配置鏡像源 終端cmd&#xff1a; npm install -g cnpm --registryhttp://registry.npmmirror.com 打開微信開發者工具&#xff0c;找到方框的文件右擊選擇內建終端打開 初始化&#xff1a; npm init -y 發現npm沒有此命令 關閉微信開發工具&#xff0c;用管理…