※ 引述《cair (白色的黑貓)》之銘言:
: 最近再找十進位轉二進位的C函式 (因為懶得自己寫了:P)
: 上網google出來 好幾個都寫的不怎樣
: 或是不合需求
: 結果找到一個範例看來很不錯 又精簡 我就先加入我的最愛
: 結果才發現網址是
: http://chchwy.blogspot.com/2007/11/blog-post_24.html
: 挖 建中哥網誌耶!!!!
: 建中哥大大好威阿 >////////<
: PS.不過後來用了彥廷建議的 bitset函式這個更短 XDDD
: #include <bitset>
: int main() {
: double n = 923876533;
: bitset<sizeof(n) * 8> s(n);
: cout << n << " = " << s << endl;
: }
bitset 字面上是 a set of bits ( 一堆 bit )
bitset 是 C++ 提供一種用類似 array 來存 bit 的資料結構
存在裡面的數字和存在int的一樣可以做 and 、 or 、 not 、 xor 等 bit 運算
另外因為存成類似 array 所以可以對這個二進位數的某一位做運算 ( 或是改變值 )
例如11001 存在 bitset a 裡面 想知道二進位第二位是多少 只要 cout<<a[1];(從0開始)
11001=25 存在 int b 裡面的話 想知道二進位第二位就要用while取餘數
用法 ( 宣告 )
bitset<長度> 變數(初始值);
長度宣告後固定 上面 sizeof(n)*8 是因為
sizeof 傳回來的是 那個資料型態是多少 byte , byte 是 8 個 bit
變數(初始值) 這個語法是bitset的建構子
所以 bitset<8> a(25); 的 a 資料型態就是是 bitset
bitset 詳細功能請參考
http://www.sgi.com/tech/stl/bitset.html
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.194.252