Changeset 153 in libcf
- Timestamp:
- 10/31/13 10:41:51 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/cf_bitwise.c
r138 r153 16 16 if ((x)) \ 17 17 return CF_ERROR_BITWISE_INVALID_ARGS 18 18 19 /** 19 20 * 비트열을 왼쪽으로 시프트 … … 37 38 size_t remain = offset % 8; 38 39 size_t byteSize = size / 8; 39 40 size_t loop = byteSize - quota; 41 42 size_t idx = 0; 40 43 size_t maskPos = 8 - remain; 41 cf_byte mask = 0; 42 cf_byte buf = 0; 43 44 ASSERT_ARGS (!in || !out); 45 46 for (iter = 0 ; iter < remain ; iter++) 47 mask |= (cf_byte)(0x80 >> iter); 44 cf_byte mask = (cf_byte)(0xff << (8 - remain)); 45 46 ASSERT_ARGS (!in || !out); 48 47 49 48 out[0] = (cf_byte)(in[0 + quota] << remain); 50 49 51 for (iter = 1 ; iter < byteSize - quota; iter++)50 for (iter = 1 ; iter < loop ; iter++) 52 51 { 53 buf = in[iter + quota] & mask;54 55 out[iter ] = (cf_byte)( in[iter + quota]<< remain);56 out[iter - 1] |= (cf_byte)( buf>> maskPos);52 idx = iter + quota; 53 54 out[iter ] = (cf_byte)((in[idx] ) << remain); 55 out[iter - 1] |= (cf_byte)((in[idx] & mask) >> maskPos); 57 56 } 58 57 … … 81 80 size_t remain = offset % 8; 82 81 size_t byteSize = size / 8; 83 82 size_t loop = quota - 1; 83 84 size_t idx = 0; 84 85 size_t maskPos = 8 - remain; 85 cf_byte mask = 0; 86 cf_byte buf = 0; 87 88 ASSERT_ARGS (!in || !out); 89 90 for (iter = 0 ; iter < remain ; iter++) 91 mask |= (cf_byte)(0x01 << iter); 86 cf_byte mask = (cf_byte)(0xff >> (8 - remain)); 87 88 ASSERT_ARGS (!in || !out); 92 89 93 90 out[byteSize - 1] = (cf_byte)(in[byteSize - 1 - quota] >> remain); 94 91 95 for (iter = byteSize - 2 ; iter > quota - 1; iter--)92 for (iter = byteSize - 2 ; iter > loop ; iter--) 96 93 { 97 buf = in[iter - quota] & mask;98 99 out[iter ] = (cf_byte)( in[iter - quota]>> remain);100 out[iter + 1] |= (cf_byte)( buf<< maskPos);94 idx = iter - quota; 95 96 out[iter ] = (cf_byte)((in[idx] ) >> remain); 97 out[iter + 1] |= (cf_byte)((in[idx] & mask) << maskPos); 101 98 } 102 99
Note:
See TracChangeset
for help on using the changeset viewer.