: 시작 n
비트 x
을 반환하는 함수 invert(x,p,n)
쓰기K & R 운동 2-7, 최적화?
내 코드 (여기에 내가 자발적으로 사용되는 문자)인가? 특히을
p
위치가 반전 됨 (즉, 1이 0으로 변경되고 그 반대의 경우), 다른 비트는 변경되지 않습니다.#include <stdio.h> #define NUMBER 235 #define POSITION 2 #define AMOUNT 4 unsigned invert(unsigned char x, char p, char n) { unsigned char bitsToInvert = 0, i; for (i = 1; i < n; i++) { // Make a number n-bits width, full of 1 bitsToInvert |= 1; bitsToInvert <<= 1; } bitsToInvert |= 1; bitsToInvert <<= p; x ^= bitsToInvert; return x; } int main() { printf("%d\n", invert(NUMBER, POSITION, AMOUNT)); }
내 코드를 가져올 수있는 최적화가 있습니까 : 여기
for
루프에서
n
1 비트를 생성합니까? 감사합니다.
'2^n - 1' 또는'(1 << n) -1'은 마지막 n 비트를 설정합니다. :) – SuperSaiyan
적어도 "unsigned chars"를 사용해야합니다. – Jasen
비트의 범위를 설정하도록 요청하는 다른 연습이 있습니다. 이것은 단지 xor 일뿐입니다. – harold