# Bit Manipulation# ZeroJudge# Integer Representation

d326 - 程式設計師的面試問題(二)

🔗 前往 ZeroJudge 原題

題目描述

題目要求實現一個程式,能夠根據輸入的整數 v、位元位置 x 和設定值 y (0 或 1),將 v 的第 x 位設定為 y,並將結果以 32 位二進位字串的形式輸出。

解題思路

程式碼直接使用位元運算來解決問題。首先,將輸入的整數 v 轉換為一個布林陣列 a,其中 a[i] 表示 v 的第 i 位是 0 還是 1。然後,根據輸入的 xy,將 a[x] 設定為 y。最後,將布林陣列 a 轉換回整數,並以 32 位二進位字串的形式輸出。

複雜度分析

  • 時間複雜度: O(1)
  • 空間複雜度: O(1)

程式碼

#include <iostream>
using namespace std;
bool a[32];
int v,x,y;
int main(){
	while(cin >> v >> x >> y){
		for(int i=0;i<32;++i){
			a[i]=v&1;
			v>>=1;
		}
		a[x]=y;
		for(int i=31;i>=0;--i)
			cout << a[i]; 
		cout << "\n";
	}
}

Discussion