主頁 >  其他 > 【C語言】萬字肝爆!建議收藏!深度剖析資料在記憶體中的存盤

【C語言】萬字肝爆!建議收藏!深度剖析資料在記憶體中的存盤

2021-06-09 21:57:12 其他

文章目錄

  • 前言
      • 正文開始
      • 型別的基本歸類
      • 整形在記憶體中的存盤
      • 大端小端
      • 做題目鞏固
        • 第一題:
        • 第二題:
        • 第三題:
      • 補充(char的取值范圍)
        • 第四題:
        • 第五題
        • 第六題


前言

資料在記憶體中到底是怎么存盤的呢?相信看完這篇文章你的內功又會增加一點,


本文重點:

1. 資料型別詳細介紹

2. 整形在記憶體中的存盤:原碼、反碼、補碼

3. 大小端位元組序介紹及判斷

4. 浮點型在記憶體中的存盤決議


正文開始


我們大家最容易接觸的內置型別:

char //字符資料型別
short //短整型
int //整形
long //長整型
long long //更長的整形
float //單精度浮點數
double //雙精度浮點數

那么這些型別有什么意義呢?

  1. 確認這些型別在記憶體開辟的空間大小,比如 int型別 4位元組
  2. 看待記憶體的視角,int型別是整形,float型別是浮點型

型別的基本歸類

- 整形家族:

char
unsigned char
signed char
short
unsigned short [int]
signed short [int]
int
unsigned int
signed int
long
unsigned long [int]
signed long [int]

為什么char型別放在整形里面?

其實字符型別在底層存盤,存的是ASCII碼值,ASCII碼值也是整數

unsigne(無符號)

未來你要創建一個變數,變數只會存正數,沒有可能有負數的情況,那么你可以創建一個unsigne的型別

signed (有符號)

有符號位,也就是有正負之分

- 浮點型別家族:

float
double

- 構造型別家族(自定義型別):

結構體型別 struct
列舉型別 enum
聯合型別 union
陣列型別

為什么陣列型別也是自定義型別?

定義一個陣列 int arr [10] ,我們知道陣列去掉它的陣列名剩下的就是型別了, int [10] <— 這個就是我們自定義的型別


定義int arr [ 5 ],去掉陣列名int [5],可以看見他們都是int型別,但是int [10]和int[5] 不一樣,所以說陣列型別也屬于自定義型別

- 指標型別:

float*p
char*p
void*p
int*p

- 空型別:

void 表示空型別(無型別)
通常應用于函式的回傳型別、函式的引數、指標型別,


整形在記憶體中的存盤

我們之前講過一個變數的創建是要在記憶體中開辟空間的,空間的大小是根據不同的型別而決定的,

那接下來我們談談資料在所開辟記憶體中到底是如何存盤的?

int a = -10;

問題一:看了上面的代碼我們知道 a 是int型別占4個位元組,那在如何存盤的呢?

首先我們要來了解下面的概念:

資料在記憶體中以二進制的形式存盤
計算機中的有符號數有三種表示方法,即原碼反碼補碼

三種方法都有符號位數值位

  • 符號位 : 符號位都是用0表示“正”,用1表示“負”
  • 數值位 : 數值位三種表示方法各不相同

對于整數來說:

整數的二進制有3種表示形式:原碼,反碼,補碼

正整數: 原碼,反碼,補碼相同

負整數: 原碼,反碼,補碼要進行計算

  • 原碼:按照數值直接寫出來的二進制序列就是原碼

  • 反碼:原碼的符號位不變,其他位按位取反,得到的就是反碼

  • 補碼:反碼加1,就是補碼


好了,知道以上的一些概念,讓我們回到問題一看看我們的int a在記憶體是怎么存盤的

  • 先編譯器取A的地址
    輸入&a 得到 f6 ff ff ff
    在這里插入圖片描述
    為什么是 f6 ff ff ff 呢?讓我們來按照上面的步驟來探究一下:

  • 獲取a的原碼
    -10
    原碼:10000000 00000000 00000000 00001010
    在這里插入圖片描述

  • 獲取a反碼
    反碼:11111111 11111111 11111111 11110101
    在這里插入圖片描述

  • 獲取a的補碼
    反碼: 111111111 111111111 111111111 11110110

上面說到為什么是f6 ff ff ff
對于整形來說:資料存放記憶體中其實存放的是補碼,怎么證明呢?

在這里插入圖片描述
可以看見把剛剛計算出來的補碼放在計算器里面得到的就是一個16進制的FFFFFFF6 ,只是順序有點倒過來了,不過的確可以證明對于整形來說:資料存放記憶體中其實存放的是補碼


問題二: 為什么要存補碼呢?為什么不存原碼呢?

在計算機系統中,數值一律用補碼來表示和存盤,原因在于,使用補碼,可以將符號位和數值域統一處理; 同
時,加法和減法也可以統一處理(CPU只有加法器)此外,補碼與原碼相互轉換,其運算程序是相同的,不需
要額外的硬體電路,

其實就是說補碼補碼相加才可以得到一個準確的數值,看不懂上面的?沒事

來個代碼:1-1 因為CPU只有加法器 , 所以就是1+(-1)

1-1

1+(-1)  (CPU只有加法器)

我們試一下 錯誤的原碼相加會等到正確的值嗎?

1 的原反補相同:00000000 000000000 00000000 000000001
-1的原碼 : 10000000 000000000 00000000 000000001

二進制原碼相加:
00000000 00000000 00000000 00000001
10000000 00000000 00000000 00000001

得到下面這個數:
10000000 00000000 00000000 00000010
認為這個是正確的數,那我們讀出來就是 -2 了,1 - 1 = 0,最后是-2肯定是錯誤的,

我們試一下 正確的補碼相加會等到正確的值嗎?

1的原反補相同:00000000 000000000 00000000 000000001

來算一下負1的補碼:

-1的原碼:10000000 00000000 00000000 00000001

-1的反碼:1111 1111 1111 1111 1111 1111 1111 1110

-1的補碼:1111 1111 1111 1111 1111 1111 1111 1111

二個數的補碼相加:
在這里插入圖片描述

得到 :10000000 00000000 00000000 000000000
32個0,一個1 ,我們實際上只可以放32個二進制數,那個進1的那位要丟掉,所以最后得到全0,而 1-1 的 正確結果也是 0.
在這里插入圖片描述

這就是為什么要補碼相加,而不是原碼,或者反碼相加的原因,


補碼與原碼相互轉換,其運算程序是相同的,不需要額外的硬體電路

這句話怎么理解呢?看下面的案列:

在這里插入圖片描述

-1的補碼要是想得到原碼,可以反過來計算,補碼-1,然后按位取反就可以得到,

那其實還有一種方法可以驗證我們上面參考的話:

我們把補碼當原碼,在過一次計算一次依然可以得到我們的原碼.

在這里插入圖片描述
是不是和上面的原碼一樣了,這就解釋了上面所說的話了,


大端小端

為什么要有大端小端:

為什么會有大小端模式之分呢?這是因為在計算機系統中,我們是以位元組為單位的,每個地址單元都對應著一
個位元組,一個位元組為8bit,但是在C語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具
體的編譯器),另外,對于位數大于8位的處理器,例如16位或者32位的處理器,由于暫存器寬度大于一個字
節,那么必然存在著一個如果將多個位元組安排的問題,因此就導致了大端存盤模式和小端存盤模式,
例如一個 16bit 的 short 型 x ,在記憶體中的地址為 0x0010 , x 的值為 0x1122 ,那么 0x11 為高位元組, 0x22
為低位元組,對于大端模式,就將 0x11 放在低地址中,即 0x0010 中, 0x22 放在高地址中,即 0x0011 中,小
端模式,剛好相反,我們常用的 X86 結構是小端模式,而 KEIL C51 則為大端模式,很多的ARM,DSP都為小
端模式,有些ARM處理器還可以由硬體來選擇是大端模式還是小端模式

啊這,太官方話了,,,, 簡單說就是你的數值大于一個位元組,就會有位元組存盤順序,所以要安排怎么把這些位元組按照什么順序放進去


什么是大端小端:

大端(存盤)模式:是指資料的低位保存在記憶體的高地址中,而資料的高位,保存在記憶體的低地址中;
小端(存盤)模式:是指資料的低位保存在記憶體的低地址中,而資料的高位,,保存在記憶體的高地址中,

來個代碼案列:

定義了一個變數:

在這里插入圖片描述

來看一下這個a在本機是什么存盤模式,是大端存盤模式,還是小端存盤模式

我們畫個圖,模擬一下這個變數在記憶體中是怎么樣存盤的,

在這里插入圖片描述

為什么說上面的是大端存盤模式,下面是小端存盤模式呢?

可以看見0x11223344 最后面的44是低位,然后在大端存盤模式下44是放在記憶體的高地址位,根據上面的概念可以得出,大端模式,低位在記憶體的高地址存盤就是大端模式

為什么下面是小端存盤模式:
0x11223344 44是放在記憶體的低地址處,根據上面的概念可以得出,小端模式,低位在記憶體的低地址存盤就是小端模式


那么我們當前的電腦上使用的是什么存盤模式呢?來讓我們一起看看
在這里插入圖片描述
誒!!!大家可以看見原來在本機上使用的是小端存盤!

在這里插入圖片描述
還記得這個FFFF FFF6嗎,也是小端存盤模式,所以說為什么有時候看記憶體是倒著的,就是因為這個大小端原因,

來做一道百度2015年的筆試題:

請簡述大端位元組序和小端位元組序的概念,設計一個小程式來判斷當前機器的位元組序,(10分)

答案:簡述的概念我們就不講了,來看一下小程式吧

思路:我們只要判斷第一個位元組是小端應該出現的位元組就是小端,是大端應該出現的位元組就是大端,

我們先看一下1在小端記憶體是怎么表示的:
在這里插入圖片描述
可以看見第一個位元組是01 也就是1 所以我們代碼看一下寫成這樣判斷

int main()
{
	//寫代碼判斷當前位元組序
	int a = 1;     //在小端應該是這樣的存盤 01 00 00 00
	char* b =(char*) &a;  //取出第一個位元組的內容 
	if (*b==1) {
		printf("小端");

	}
	else {
		printf("大端");
	}
	return 0;
}

也可以寫成函式的那樣:

int check_sys()
{
	int a = 1; 
	return (*(char*)&a);  //因為回傳的是1 或者0 也是&a的內容 所以可以直接rerunt
}
int main()
{
	int ret  =	check_sys();
	if (ret == 1 )
	{
		printf("小端");

	}
	else
	{
		printf("大端");

	}
	return 0;
}

做題目鞏固

第一題:

1.
//輸出什么?
#include <stdio.h>
int main()
{
char a= -1;
signed char b=-1;
unsigned char c=-1;
printf("a=%d,b=%d,c=%d",a,b,c);
return 0;
}

答案:-1 , -1 ,255

決議:(a)-1的由來

-1在記憶體中存的是補碼
-1的原碼:10000000000000000000000000000001
-1的反碼:11111111111111111111111111111110
-1的補碼:11111111111111111111111111111111
因為a是char型別只可以放8個bit為所以a里面應該存的是 8個1
再因為輸入列印是以%d型別列印的所以要發生整形提升,有符號位發生提升前面全補1
11111111變成11111111111111111111111111111111 —這個是補碼
還要變成原碼的方式輸出出去:

a的補碼11111111111111111111111111111
a的反碼11111111111111111111111111110
a的原碼10000000000000000000000000000001
最后列印的是原碼:-1

b其實也是一樣的有符號的-1

決議(c)255的由來
因為c是unsigned char型別只可以放8個bit為所以a里面應該存的是 8個1,
再因為輸入列印是以%d型別列印的所以要發生整形提升,無符號位發生提升前面全補0,

11111111變成00000000000000000000000011111111 —這個是補碼
看符號位是0,判斷它是一個正數,所以正數的原反補相同,最后已原碼列印出來的是8個1 也就是255
在這里插入圖片描述
補充:char 到底是signed char 還是unsigned char ?
答:C語言標準并沒有規定,取決于編譯器
int 是 signed int

第二題:

2.
#include <stdio.h>
int main()
{
char a = -128;
printf("%u\n",a);
return 0;
}

答案是:4294967168

決議:

a的原碼:10000000000000000000000010000000
a的反碼:11111111111111111111111101111111
a的補碼:11111111111111111111111110000000

因為a是char型別,所以a里面存放的應該是8個bit位: 10000000
以%u形式輸出出來,要發生整形提升,看見a是char型別是有符號的,高位補1,得到:11111111111111111111111110000000,最后發現是以%u的型別列印出來,可%u是無符號型別,就意味著,這是個正數,正數的原反補相同,所以是168結尾的大數字
在這里插入圖片描述

第三題:

#include <stdio.h>
int main()
{
char a = 128;
printf("%u\n",a);
return 0;
}

答案:4294967168

決議:和上面一樣
注意:char a =128, 其實a不可能放一個128,127后就是-128了

補充(char的取值范圍)

char取值范圍是:-128 ~ 127

為什么?

畫圖解釋一下:

char是8個bit位,所以在記憶體應該是這樣的:
在這里插入圖片描述
因為01111111已經是最大的正數了,在加1最高位變成1的話,那就變成負數了,01111111 == 127,

在這里插入圖片描述

如果01111111加1那么就變成了10000000,當然這個數并不是0,而是-128,遇見一個1,七個0都是-128,因為這里的二進制數不可以計算原反補碼了,但是其他的就不一樣,(負數是要進行原反補的)
在這里插入圖片描述
補碼:11111110通過原反補的計算得到 -2
反碼:11111101 補碼減1得反碼
原碼:1000010 == -2 反碼取反得原碼

第四題:

int i= -20;
unsigned int j = 10;
printf("%d\n", i+j);

答案:-10
決議:求出-20 和 10的補碼相加 然后%d列印認為是有符號,還要計算出原碼列印出來,

i的原碼:10000000000000000000000000010100
i的反碼:11111111111111111111111111101011
i的補碼:11111111111111111111111111101100
j的補碼:00000000000000000000000000001010

在這里插入圖片描述

因為%d列印的所以還要取出原碼
在這里插入圖片描述

最終是-10

第五題

unsigned int i;
for(i = 9; i >= 0; i--)
{
printf("%u\n",i);
}

答案:死回圈

決議: 因為i是一個無符號數字,對于一個無符號數字 最小是0,判斷條件剛好是大于等于0,所以恒成立“,所以死回圈

第六題

int main()
{
char a[1000];
int i;
for(i=0; i<1000; i++)
{
a[i] = -1-i;
}
printf("%d",strlen(a));
return 0;
}

答案 :255

決議:strlen找到 \0 停止, 從-1 到 127 因為char的范圍是-128~127 所以128+127 = 255
在這里插入圖片描述
第七題

#include <stdio.h>
unsigned char i = 0;
int main()
{
for(i = 0;i<=255;i++)
{
printf("hello world\n");
}
return 0;
}

答案: 死回圈
決議:無符號的char 取值符號是255 沒有正反區分,條件剛好是大于等于255 ,所以死回圈
在這里插入圖片描述

本文結束,感謝大家的觀看!!!感覺對你有用的話,不妨點個大拇指

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286294.html

標籤:其他

上一篇:[C/C++]詳解C++的類和物件

下一篇:計算機網路實驗(思科模擬器Cisco Packet Tracer)——路由器配置

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more