自己工作中遇到需要對單位元組的高位、低位進行賦值,即乙個位元組byte,想要給每一位都賦值,這個值是動態來的,是0或是1。
一、設定
方法code:
///
/// 設定某一位的值
///
///
/// 要設定的位, 值從低到高為 1-8
/// 要設定的值 true / false
///
byte set_bit(byte data, int index, bool flag)
呼叫code:
byte s = set_bit(8, 8, true);
結果:s 的值為 136, 結果正確。
二、獲取值
獲取乙個位元組中的每一位的值,需要分別與128 64 32 16 8 4 2 1相與&運算
假設位元組為byte1
bit8 = byte1 & 128 == 128 ? 1 : 0;
bit7 = byte1 & 64 == 64 ? 1 : 0;
bit6 = byte1 & 32 == 32 ? 1 : 0;
bit5 = byte1 & 16 == 16 ? 1 : 0;
bit4 = byte1 & 8 == 8 ? 1 : 0;
bit3 = byte1 & 4 == 4 ? 1 : 0;
bit2 = byte1 & 2 == 2 ? 1 : 0;
bit1 = byte1 & 1 == 1 ? 1 : 0;
另外,收集到網路上的其他資料:
引用:你好,感謝你閱讀此帖.
今天我們要討論的是在c#中如何獲取乙個數值中的某一位的資料,比如乙個byte型資料8,它的二進位制表示為00001000(高位到低位),那我應該怎樣獲取它的第3位的值1呢?
我的想法是這樣的,先把第3位的值右移7-3=4位,然後再右移7位,最後取這個值,這樣就把第3位前後的值都變為0了,最後輸出它的值為1.下面是我寫的乙個方法:
c# code
/// /// 獲取資料中某一位的值///
/// 傳入的資料型別,可換成其它資料型別,比如int
/// 要獲取的第幾位的序號,從0開始
/// 返回值為-1表示獲取值失敗
private int getbitvalue(byte input,int index)
//左移到最高位
int value = input << (sizeof(byte) - 1 - index);
//右移到最低位
value = value >> (sizeof(byte) - 1);
return value;
}
回覆:想看那一位是1就把第幾位設定為1,其他設定為0,同input進行與操作,返回,大於0則是1,==0則是0.
回覆://index從0開始
//獲取取第index位
public static int getbit(byte b, int index)
//將第index位設為1
public static byte setbit(byte b, int index)
//將第index位設為0
public static byte clearbit(byte b, int index)
//將第index位取反
public static byte reversebit(byte b, int index)
回覆:private static int getbitvalue(byte input, int index)
回覆:c# code
//每8位為乙個位元組private const int bitcout = 8;
///查詢物件記憶體第index位值
static int getvalueofindex(object obj, int index)
for (int i = 0; i < 32; i++)
console.writeline(15.0f + " : " + getvalueofindex(13, 28));
怎麼把位域合成乙個位元組 位域 bit field
一 位域 有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分為幾 個不同的區域,並說明每...
ACM節約每乙個位元組 C 實現
節約每乙個位元組 description john在做乙個專案,專案對儲存容量有著近乎苛刻的要求,為此john需要對一些東西進行壓縮儲存。john的第乙個問題就是一大堆的字串,儲存它們太佔地方了,為此他想了乙個辦法 如果字串具有相同的字尾,那麼就把這麼字串的相同字尾和在一起,這樣就能節約一點空間了。...
求乙個位元組中,1 0的個數
真是很極端的做法啊 宋寶華 21cnbao 21cn.com 軟體報 問題 對於乙個位元組 8bit 的資料,求其中 1 的個數,要求演算法的執行效率盡可能地高。分析 作為一道著名外企的面試題,看似簡單,實則可以看出乙個程式設計師的基本功底的紮實程度。你或許已經 想到很多方法,譬如除 餘操作,位操作...