我不確定爲什麼某些代碼格式不正確,所以如果難以閱讀,我很抱歉。我正在爲我的一個課程學習C++,但我被卡住了。我對這門語言知之甚少,所以我實在不知道接下來會發生什麼問題或做什麼。位操作,插入,二進制
該程序應該採用四個參數,一個二進制數,一個第二個二進制數,一個位置編號和來自新編號的位數。它應該從新的號碼中取出第一個(位數),並將它們插入原始位置(短)。
目標是讓底部的測試通過。我設法刪除所有的錯誤消息,但測試沒有通過,所以我必須在某處發生邏輯錯誤。
#include <iostream>
#include <cassert>
#include <bitset>
#include <climits>
using namespace std;
// Return the altered bits of "input"
// where the first "numBits" of "newBits" (unspecified bits are 0)
// replace "input" bits starting at "position"
unsigned char set_bits_to(
unsigned char input,
unsigned char newBits,
short position,
short numBits){
//Your Code Here
unsigned char insert;
int x;
int i;
int q = 0;
if (input < 225) {
bitset<4> o(input);
bitset<4> d(newBits);
for (x = 0; x < numBits; x++) {
insert = o[position] = d[q];
q++;
position = position + 1;
}
}
// else {
// bitset<8> x(input);
// }(input)
//bitset<8> x(input);
//Stop Code Here
};
int main() {
assert(set_bits_to(0b1111, 0b0, 0, 1) == 0b1110);
assert(set_bits_to(0b1111, 0b0, 1, 1) == 0b1101);
assert(set_bits_to(0b1111, 0b0, 0, 3) == 0b1000);
assert(set_bits_to(0b11001100, 0b101, 2, 3) == 0b11010100);
assert(set_bits_to(0b11001100, 0b101, 2, 5) == 0b10010100);
assert(set_bits_to(0b11001100, 0b101, 3, 3) == 0b11101100);
assert(set_bits_to(0b11001100, 0b101, 5, 3) == 0b10101100);
assert(set_bits_to(0b1111, 0b101010, 0, 6) == 0b101010);
assert(set_bits_to(0b1111, 0b101010, 1, 6) == 0b1010101);
assert(set_bits_to(0b1111, 0b101010, 0, 3) == 0b1010);
cout << "All tests passed" << endl;
return 0;
}
爲什麼它所含的B的呢? Idk爲什麼會起作用。此外,你沒有返回聲明。 –
是的,我知道這一點,我的道歉。我有一個返回聲明,但是當我試圖找出某些東西時,我將其移動了。我想我忘了把它放回去。 – WolfGoddess