File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change 1+ // 8비트로 쪼갠 방법
2+ function reverseBits ( n : number ) : number {
3+ const TOTAL_BITS = 32 ;
4+ const BITS_IN_BYTE = 8 ;
5+ const BYTES_IN_INTEGER = TOTAL_BITS / BITS_IN_BYTE ;
6+ const BYTE_MASK = 0xff ;
7+
8+ let result = 0 ;
9+
10+ const reversedByteCache : number [ ] = Array . from ( { length : 2 ** BITS_IN_BYTE } , ( _ , n ) => {
11+ let reversedNum = 0 ;
12+
13+ for ( let i = 0 ; i < BITS_IN_BYTE ; i ++ ) {
14+ const bit = ( n >>> i ) & 1 ;
15+ reversedNum |= bit << ( BITS_IN_BYTE - 1 - i ) ;
16+ }
17+
18+ return reversedNum ;
19+ } ) ;
20+
21+ for ( let i = 0 ; i < BYTES_IN_INTEGER ; i ++ ) {
22+ const byte = ( n >>> ( i * BITS_IN_BYTE ) ) & BYTE_MASK ;
23+
24+ const reversed = reversedByteCache [ byte ] ;
25+ result |= reversed << ( TOTAL_BITS - ( i + 1 ) * BITS_IN_BYTE ) ;
26+ }
27+
28+ return result >>> 0 ;
29+ }
30+
31+ // 32번 연산 방법
32+ function reverseBits ( n : number ) : number {
33+ const BITS_LEN = 32 ;
34+
35+ let reversed = 0 ;
36+
37+ for ( let i = 0 ; i < BITS_LEN ; i ++ ) {
38+ const bit = ( n >>> i ) & 1 ;
39+
40+ const reversedPosition = 31 - i ;
41+ reversed |= bit << reversedPosition ;
42+ }
43+
44+ return reversed >>> 0 ;
45+ }
You can’t perform that action at this time.
0 commit comments