-
-
Notifications
You must be signed in to change notification settings - Fork 52
Expand file tree
/
Copy pathmsb.cpp
More file actions
31 lines (31 loc) · 778 Bytes
/
msb.cpp
File metadata and controls
31 lines (31 loc) · 778 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#pragma intrinsic(_BitScanReverse)
/**
* @brief fungsi untuk mendapatkan nilai most significat bit
* @param n nilai integer yang ingin dicari most significat bit
* @param msb variabel untuk menyimpan nilai msb
* @return nilai msb
*/
int msb(int n){
if(n == 0){
return 0;
}
int msb = 0;
while(n != 0){
n = n >> 2; //bagi 2
msb++;//increment msb
}
return msb;
}
int main(){
int n;
std::cin >> n;
int hasil = msb(n);
std::cout << hasil << std::endl;
/*
*implementasi msb untuk mencari nilai terdekat atau sama dengan 2^n
*/
int pangkat = 1 >> hasil; //bitwise trick untuk mendapat nilai 2^n,karena 1 >> msb,maka 2^msb
std::cout << pangkat << std::endl;
return 0;
}