임의의 자연수를 생성하는 루프에서 알고리즘을 찾고 있는데 n
증분과 2를 사용하여 곱하기를 사소한 방법으로 알 수 있습니다 (숫자 n 번 증가) 조금 더 빨리 뭔가를 찾고 있어요. 솔직히 나는 이것을 어떻게 시작해야할지조차 모른다.증가 및 2를 사용하여 임의의 숫자 생성
0
A
답변
3
기본적으로 원하는 것은 MSB부터 시작하여 오른쪽의 숫자 비트를 이동하는 것입니다.
예를 들어 번호가 70이면 이진수는 0b1000110
입니다. 따라서 비트 1, 0, 0, 0, 1, 1, 0을 "이동"하려고합니다.
0으로 이동하려면 단순히 숫자를 두 배로하십시오. 하나를 이동하려면 숫자를 두 배로 늘린 다음 증분하십시오. 당신이 MSB에서 비트의 배열을 제공하는 경우 (왼쪽에서 오른쪽으로, 즉)
if (bit_to_be_shifted_in != 0)
x = (x * 2) + 1;
else
x = x * 2;
그래서, LSB, 다음 C 코드는 다음과 같습니다 :이 일을
x = 0;
for (i = 0; i < number_of_bits; i++)
{
if (bits[i] != 0)
x = x * 2 + 1;
else
x = x * 2;
}
0
한 가지 방법을 거꾸로 간다. 홀수 인 경우 1을 뺍니다. 원하는 번호가 짝수 경우 2.
while(n > 0) {
n & 1 ? n &= ~1 : n >>= 1;
}
관련 문제
- 1. C에서 임의의 숫자 생성
- 2. 임의의 숫자 범위 생성
- 3. SHA를 여러 번 사용하여 임의의 숫자 생성
- 4. SecureRandom 및 BigInteger를 사용하여 임의의 숫자 만들기
- 5. C 전처리기를 사용하여 임의의 숫자 생성
- 6. rand()를 사용하여 임의의 숫자 생성
- 7. 다른 번호에서 임의의 숫자 생성
- 8. sed를 사용하여 임의의 행 번호에 임의의 숫자 생성
- 9. SHTML 페이지에서 임의의 숫자 생성
- 10. 생성 임의의 숫자 1-100
- 11. 고유 한 임의의 숫자 생성
- 12. 임의의 범위의 숫자 생성 Excel에서
- 13. while 루프의 임의의 숫자
- 14. 임의의 int64 및 float64 숫자
- 15. n 자리 이상의 임의의 숫자 생성
- 16. C에서 -n에서 n까지 n에서 임의의 숫자 생성
- 17. Java 루프 및 임의의 숫자
- 18. PHP 이미지에 임의의 숫자/문자열 생성
- 19. 예상 값을 기준으로 임의의 숫자 생성
- 20. 쿠다 커널 내 임의의 숫자 생성
- 21. 숫자 생성 및 메모리에서 선택
- 22. 숫자 2를 비교하는 방법?
- 23. Objective-C에서 두 숫자 사이에 임의의 숫자 생성
- 24. C에서 1과 9 사이의 임의의 숫자 생성
- 25. 모든 숫자가 지정된 범위에서 임의의 숫자 생성
- 26. 정의 된 데이터 형식으로 임의의 숫자 생성
- 27. 다양한 범위의 Cuda 커널에서 임의의 숫자 생성
- 28. 4 번 반복되는 임의의 숫자 생성 Javascript?
- 29. 평균 차이가있는 임의의 숫자 목록 생성
- 30. 최대 1을 더하는 임의의 숫자 목록 생성
으로도, 분할의 경우 (8 4 생성을 위해 다음 4 * 2 수 (8), 말), 당신은 두 번, 그 반 프리스트를 생성 할 수 있습니다. 홀수 인 경우 먼저 반을 생성하고 (나머지 1/2이 드롭 된 상태에서) 두 번 증가합니다 (13은 6을 생성하고 6 * 2 + 1은 13을 생성합니다). – CiaPan
몇 가지 예를 제공해 주시겠습니까? 루프에서 작업하는 것은 초기 값, 증분 및 조건을 가정하며 루프 연산 중에는 숫자를 처리 할 것이므로 언제 종료해야합니까? – NoChance
이진수를 알고 있습니까? :) – Jester