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