流行的用法:用二進位制的每一位代表一種狀態。
001,010,100這樣就表示三種狀態。
通過或|運算就可以組合各種狀態。
001 | 010 = 011
001 | 010 | 100 = 111
通過與&運算可以去除某種狀態。
111 & 001 = 110
可以定義這樣的巨集組合成函式的引數
#define p1 0x001l // 001
#define p2 0x002l // 010
#define p3 0x004l // 100
void func(long){}
func(p1 | p2);
可以這樣判斷某位是否是1
由於001與***只有兩種狀態000或001
比如001&100=000,001&101=001
void func(long l) // 001與xx0 = 000,001與xx1 = 001
if(l&p2){} //
下面我用調料為例寫段**直觀說明:
#include
#include
using namespace std;
#define tl_yan 0x001l //00001 鹽
#define tl_tang 0x002l //00010 糖
#define tl_jiangyou 0x004l //00100 醬油
#define tl_cu 0x008l //01000 醋
#define tl_lajiao 0x010l //10000 辣椒
typedef long long;
//調料void tiaoliao(long l)
if (l&tl_yan)//00001 & ***x1 = 00001 ;
qbytearray array(c);
qdebug() <
1、將十六進製制字串轉化為十進位制整數
word dec( cstring str )
word decvalue=0;
int i=0;
for( i=0 ; i
if(str[i]>= 'a'&&str[i]<='f')
decvalue*=16;
decvalue+=str[i]-'f'+15;
else if ((str[i]>='a') && (str[i]<='f')) date;
在結構中,日期資料占用最低5位,月份占用4位,年占用14位。這樣整個日期資料只需占用23位,即3個位元組。忽略第24位。如果用整數來表達各個域,整個結構要占用12個位元組。
| 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 |
+------------- year --------------+ month+-- day --+
現在分別看看在這個結構宣告中發生了什麼
首先看一下位域結構使用的資料型別。這裡用的是byte。1個byte有8個位,編譯器將分配1個byte的記憶體。如果結構內的資料超過8位,編譯器就再分配1個byte,直到滿足資料要求。如果用word或dword作結構的資料型別,編譯器就分配乙個完整的32位記憶體給結構。
其次看一下域宣告。變數(day, month, year)名跟隨乙個冒號,冒號後是變數占用的位數。位域之間用逗號分隔,用分號結束。
date.day = 12;
dateptr = &date;
dateptr->year = 1852;
三十六進製制加法
暴力轉換,就是把兩個36進製的數轉換成10進製,如何用10進製進行加減,最後再轉化成36進製,這種比較簡單就不再展示 重點講解第二種直接用36進製進行相加。看 有注釋 public class jinzhizhuanhuan aslist的返回物件是乙個arrays內部類,並沒有實現集合的修改方法,...
Excel輸入十六進製制數,以及十六進製制運算
網上覆制來複製去的連個靠譜答案都沒有.f k 所以無奈自己探索出來了 單元格 a1文字值 a2進製值 輸入內容 fefe oct2hex hex2oct a29 由於單元格沒有提供進製格式,所以填入的值實際上是文字值,但是轉換函式卻可以把文字值視為進製值拿去轉換 所以我們兩次轉換就能得到真正的進製數...
c 十六進製制加法 16進製制數之間的加法
十六進製制 1.數碼 0.1.2 9.a.b.c.d.e.f.其中 十六進製制數碼 a b c d e f 十進位制數值 10 11 12 13 14 15 基數 16 2.計數規則 逢十六進一 借一當十六 3.按權展開式 按權展開每上十六進製制數.例 4e6c 4 16 3 e 16 2 6 16...