C語言中能不能定義乙個4bit長的變數?

時間 2021-06-01 21:12:53

1樓:

計算機處理最小單元是位元組。

另外結構體當中位域,4位存你所需要的。另外4位是空著的。除了這個結構體其他程式無法訪問,雖是4位但仍然是乙個位元組。

2樓:繁星雨夜

最簡單的方式就是用位域把你要節省RAM的變數包起來

還有一種比較蛋疼的方法就是用位操作變數,我做了一組巨集可以比較便捷的操作四位變數:

#define VAR1 0

#define VAR2 1

#define VAR3 2

#define VAR4 3

#define VAR_CLR 0x0F

#define VAR_SET(value,x)

#define VAR_READ(x) ((Var >> (x * 4)) & 0x0F)

unsigned short int Var;

//以下為操作四位變數的方法

VAR_SET(7,VAR2);

VAR_READ(VAR2);

沒有測試過,不知道有沒有問題。理論上可以。

這種方法為了節省RAM增加了很多運算量,實現乙個16位變數當4個4位變數用。

還有更高階的是把乙個陣列按照這種方式去操作,可以申請很多的四位變數,而不像這樣受變數長度限制,但是演算法就更複雜了。這種方式是得不償失的,只有在極端方式下實用,僅供參考

2016.3.18更新

已完成測試

3樓:Tiger Li

不知道你是用的什麼微控制器,在C51中支援bit這一資料型別,所佔位數是1位,表示數的範圍是0-1,所以如果你想構造乙個4位的資料可以使用4個bit型別的資料。

4樓:龔黎明

C語言本身是沒有的,嵌入式應用裡面是可以的。需要編譯器提供支援。

比如51微控制器使用keil程式設計,就可以定義bit型別的變數。

C語言中,對於部分位操作,都是使用位運算子。比如<<, >>, | , & 等。

能不能詳細解釋C語言中main返回值,一部分編譯器用void為什麼會報錯?

劉巨集宇 C Reference Manual 5th,Samuel P.Harbison III Guy L.Steele Jr. gesturewei main返回值用於返回當前程式的退出值,與exit函式的引數一樣的作用,事實上大部分c執行庫做的就是exit main argc,argv 這個...

能不能定義乙個數 I,與 0 的乘積等於 1?

天之水花比殼 結合律等定義不一定要適用.這個l其實可以就是無窮大.無窮大 1 無窮大.左右各減去無窮大 1 0看,本來就不適用於交換律結合律等法則,而這個特例的矛盾點最終都可以歸結到 無窮大 這個數本身定義,就如同虛數i,一切矛盾都可以歸結到i本身的定義上.那麼問題來了,為什麼數學界不定義如下 無窮...

能不能在電腦上建立乙個假C盤,然後所有軟體預設儲存到這個盤,真C盤就可以無憂了?

曉興興 為啥幾乎所有軟體預設安裝位置都是C盤呢?因為軟體不清楚你的電腦分割槽狀況。如果貿然安裝在其它盤,那可能帶來很多問題,比如 1.電腦只有乙個分割槽 C盤,系統安裝後,按慣例,系統所在分割槽為C,後面的依次為DEFGH.軟體預設安裝D盤,卻安裝到了光碟機上,這時光碟機的碟符是D。2.不存在要安裝...