답변
2의 보수 정수에 모든 비트를 설정하면 -1이됩니다.
나에게 (아주 작은)이 비트 정수 2의 보수 사용하여 서명으로 설명하자 : -2 1에서 오버 플로우 과거,
00 → 0
01 → 1
10 → −2
11 → −1
이 그냥 0에서 카운트 업되어 및에서 끝나는 -1 . 보시다시피, 0을 얻는 모든 비트를 지우면 모두 설정하면 -1이됩니다 (정수의 넓이에 관계없이).
제로 실제로 그건
(즉 진정한는 제외 부울 연산자와 가지, 비트 연산자와 마찬가지로 잘 작동하지 -1 대신 1의 거기로 마음 당신은 BASIC을 사용하는 사람들은 이미 알고 있었다) PHP 정수 유형은 32 비트 부호있는 정수 아닌 단일 비트만큼 32 제로 비트에 의해 표현되고 :0000 0000 0000 0000 0000 0000 0000 0000
그래서 아닌로 (-1 two's complement 결과 그들 모든를 뒤집 비트
기호를 나타내는 가장 왼쪽의 하나) :1111 1111 1111 1111 1111 1111 1111 1111
왜 모든 비트가 -1인지 알 수 없다면 스스로에게 물어보십시오 : 1을 더하면 어떻게됩니까? 답변 : 오버 플로우가 발생하고 모든 비트가 0입니다. 당신이 그것에 하나를 더할 때 우리는 숫자에 이름을 붙입니다 ... -1. –
David,이 점은 2의 보수에 해당하지만 부호 비트 또는 1의 보수 (적어도 순진하지는 않음)에는 해당되지 않습니다. 어느 옵션이든 컴퓨터를 잘 아는 사람의 입장에서 똑같이 설명 할 수 있습니다. – Joey
예는해야하고, 2의 보수 시스템에 설정된 모든 비트 숫자가 -1에 동일 0이 설정되지 않은 모든 비트를 가지고 있기 때문에, ~ A는 모든 비트가 설정됩니다 $.
코드가 예상대로 동작합니다.
정수는 2의 칭찬 형식으로 저장됩니다.
양식 될 수 윤곽 광고 다음과
1) 숫자이어서 이진 값
저장되는 양의 값이 저장되는 경우예 $ 브로 = 5; 여기
은 $ 브로는의 ordiary 이진 equivlent 포함 5 = 0101 // 비트 수는 구체적인2)는 다수의 네거티브 저장하는 경우 다음 조로 칭찬의 저장 -5 말에 따라
여기에 첫 번째$val = -5;
5의 2의 칭찬 즉, 5 + 1
~ 0101 = 1010
tnen 단순히 하나의 칭찬이 1
추가 발견된다1010 +
1
-----
1011
이 1011은 $ val에 저장됩니다.
같은 방식으로, $ val = 0; 00
~ $ 발 => 2의 칭찬 형태 -2의 equalient은 11
당신이주의 깊게 관찰하는 경우 마지막으로, 당신은 요청할 수 있습니다,
그래서 어떻게 나타낼 수 11 를 저장 ? 이진 값이 1011이고 2의 comp에서 -5의 값과 충돌합니까?대답은 숫자를 나타내는 데 사용되는 비트 수입니다. 2의 complimwent 형태
그러면 그것은하지
-2^(n-1) to 2^(n-1) -1 ;
- 1. 언어 파일이 다른 디렉토리의 파일과 작동하지 않습니다.
- 2. SFTP가 PHP에서 작동하지 않습니다.
- 3. Java 파일 판독기가 작동하지 않습니다. 코드 비트가 실행되지 않습니다.
- 4. PHP에서 pdftk이 작동하지 않습니다
- 5. 세션이 PHP에서 작동하지 않습니다.
- 6. Javascript 플러그인이 작동하지 않습니다 (jquery 옆 또는 옆에 있음)
- 7. mkdir가 PHP에서 작동하지 않습니다
- 8. 세션은 PHP에서 작동하지 않습니다
- 9. addslashes가 PHP에서 작동하지 않습니다
- 10. Facebook FQL 쿼리가 예상대로 작동하지 않습니다 - 언어 문제 일 수 있습니까?
- 11. AngularJS - 비어 있음 <option> - 다른 솔루션이 작동하지 않습니다.
- 12. function file_exists가 PHP에서 작동하지 않습니다.
- 13. 다른 언어
- 14. Prepared Statement가 PHP에서 작동하지 않습니다.
- 15. PHP에서 move_uploaded_file()이 작동하지 않습니다.
- 16. 단일 백엔드 언어 또는 다른 프론트 엔드 언어
- 17. shell_exec(); PHP에서 제대로 작동하지 않습니다.
- 18. PHP에서 삽입 문이 작동하지 않습니다.
- 19. oci_bind_by_name이 (가) PHP에서 작동하지 않습니다.
- 20. 메일 기능이 PHP에서 작동하지 않습니다.
- 21. 'Location'헤더가 PHP에서 전혀 작동하지 않습니다.
- 22. exclude 배열이 PHP에서 작동하지 않습니다
- 23. DataOutputStream, 일부 비트가 손실되지 않습니다
- 24. Google Api 언어 번역이 작동하지 않습니다.
- 25. PHP에서 언어 번역
- 26. 배열 검색이 PHP에서 작동하지 않습니다
- 27. array_unique가 PHP에서 예상대로 작동하지 않습니다.
- 28. PHP에서 nl2br이 갑자기 작동하지 않습니다
- 29. 라디오 버튼을 PHP에서 작동하지 않습니다
- 30. PHP에서 exec 명령이 작동하지 않습니다.
에서만 값을 나타낼 수있는 비트를 n 개의가있는 경우. 두 개의 칭찬에서 모든 것들의 비트 필드는 -1입니다. http://en.wikipedia.org/wiki/Two%27s_complement – GordonM