用bitset進行2進製輸入輸出

2022-02-02 00:14:33 字數 676 閱讀 9483

c/c++內建的輸入、輸出,對整數進製只支援三種:8進製、10進製、16進製。記得很久以前,有好幾次想用到2進製的輸入輸出,最終只好自已轉換。

昨天kaikai突然發了乙個post:

kaikai:

看看能不能把這個程式改得更短

?#include 

<

cstdio

>

intmain()

return0;

}一眼看過去,呵呵,輸入輸出不可省,核心還是二進位制的轉換問題。於是想起以前曾經做過的事情,學習多了,直覺的可以用bitset來實現。開啟msdn,查詢bitset,嘿,果然有定義流輸入操作符。

寫了乙個測試:

#include 

<

iostream

>

#include 

<

bitset

>

using

namespace

std;

void

main()

呵呵,搞定了,輸入2進製,輸出10進製,完全正常。以後輸入2進製串的時候,就不需要自已轉換了。

補充:經過wang.lj 網友的提醒,才發現c庫中還有乙個函式,就是用來將數字串以指定的數制轉換成整數的:

i = strtol(s, &end, 2); //二進位製流轉換為16進製制字串

bitset 10進製轉2進製 2進製各種操作

bitset儲存二進位制數字。bitset就像乙個bool型別的陣列一樣,但是有空間優化。bitset中的每個元素都能單獨被訪問,例如對於乙個叫做a的bitset,表示式a 3 訪問了它的第4個元素,就像陣列一樣。但是輸出單獨訪問結果不能用printf,和bitset有關的輸出都用cout 另外bi...

彙編 十六進製制輸入轉換十進位制輸出(附加輸入檢測)

輸入乙個最大長度為4的十六進製制數,將其轉換成10進製輸出。其中我們需要檢測十六進製制輸入的正確性,比如大小寫 特殊字元和數字的判斷。程式分為兩個部分,首先是處理我們的輸入,以及通過除法計算十進位制數的過程。data segment use16 data ends stack segment use...

用批處理進行進製轉換

echo off setlocal enabledelayedexpansion set p a 請輸入要轉換的十進位制數 set aa a set p b 請輸入要轉換的幾進製?set str 0123456789abcde hex set a m a b set a n a b set n st...