우리는 서명과 서명되지 않은 번호를 가지고, 그래서 우리가 진에는 차이가 없습니다 우리가 5
와 같은지 여부를 알 수있는 방법 0101
의 값을 부여 또는 -1
as you may notice the second bit from the left is on
음수와 양수를 구별 할 수 있습니까? 바이너리에서
0
A
답변
1
에 있다고 말한다하도록 할 수 있습니다. 차이점은 주어진 언어/컴파일러/환경/프로세서가 주어진 2 진수 시퀀스를 어떻게 처리하는지에 있습니다. 예를 들어 Intel x86/x64 환경에서는 MUL
및 IMUL
곱셈에 대한 지침이 있습니다. IMUL
명령어는 부호가있는 곱셈을 수행합니다 (즉, 피연산자 비트를 부호있는 값으로 처리합니다). 부호있는/부호없는 피연산자를 구별하는 다른 지침 (예 : DIV
/IDIV
, MOVSX
등)도 있습니다.
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
int main(void)
{
int16_t c16;
uint16_t u16;
__asm {
mov al, 0x01
mov bl, 0x8F
mul bl // ax = 0x01 * 0x8F
mov u16, ax
mov al, 0x01
mov bl, 0x8F
imul bl // ax = 0x01 * 0x8F
mov c16, ax
};
char uBits[65];
char cBits[65];
printf("%u:\t%s\n", u16, _itoa(u16, uBits, 2));
printf("%d:\t%s\n", c16, _itoa(c16, cBits, 2));
return 0;
}
출력은 다음과 같습니다 : 여기
빠른 예제 편집에143: 10001111
-113: 11111111111111111111111110001111
:
그냥 예제를 확장 - C/C++에서 (구별 다른 언어와 마찬가지로 부호있는 및 부호없는 수량) 컴파일러는 부호있는 값 또는 부호없는 값에서 연산을 수행하는지 알며 적절한 명령어를 생성합니다. 위의 예에서 컴파일러는 int
(C/C++에서는 int
이 기본적으로 서명 됨 - signed int
을 나타내는 것과 동일 함)으로 승격하므로 _itoa()
을 호출 할 때 변수 c16
을 올바르게 부호 확장해야 함을 알고 있습니다. 변수 은 _itoa()
을 호출 할 때 unsigned int
으로 승격되므로 부호 확장이 발생하지 않습니다 (부호없는 값에 부호 비트가 분명히 없기 때문에).
0
실제 하드웨어에서 음수의 구현은 디자이너가 선택한 것에 따라 다릅니다. 일반적으로 서명 숫자는 Two's Complement
표현하지만 거기에있다 Many More
관련 문제
- 1. Fedora와 Ubuntu를 어떻게 구별 할 수 있습니까?
- 2. 스키마를 테이블과 구별 할 수 있습니까?
- 3. 어떻게 컴파일러는 다음을 구별 할 수 있습니까?
- 4. SQL로 데이터를 구별 할 수 있습니까?
- 5. 두 배열 인덱스를 구별 할 수 있습니까?
- 6. iPhone, 여러 컨트롤을 구별 할 수 있습니까?
- 7. 노드와의 클라이언트 연결을 구별 할 수 있습니까?
- 8. 플러그인을 단편과 어떻게 구별 할 수 있습니까?
- 9. POST를 GET에서 window.location으로 구별 할 수 있습니까?
- 10. Windows에서 연결된 키보드를 구별 할 수 있습니까?
- 11. 시리얼과 다른 데이터를 구별 할 수 있습니까?
- 12. 테스트 & 변수 설정을 구별 할 수 있습니까?
- 13. 배치 - 파일과 경로를 구별 할 수 있습니까?
- 14. 하나 이상의 인수를 구별 할 수 있습니까?
- 15. 일반 바이너리에서 일부 기능을 연결할 수 있습니까?
- 16. J2ME 폴란드어 바이너리에서 클래스를 어떻게 재정의 할 수 있습니까?
- 17. 연결 레코드를 구별 할 수있는 방법이 있습니까?
- 18. mysql-database는 UNIX와 같이 대문자와 소문자를 구별 할 수 있습니까?
- 19. "양호한"http 요청 및 DoS 공격과 구별 할 수 있습니까?
- 20. jquery에서 위/아래 스크롤을 구별 할 수 있습니까?
- 21. 프리즘 행사의 발신자를 어떻게 구별 할 수 있습니까?
- 22. 리플렉션없이 박스형 값 유형을 참조 유형과 구별 할 수 있습니까
- 23. JavaFX는 반복되는 키 값 쌍을 읽고 구별 할 수 있습니까?
- 24. 중첩 된 인용문과 중첩 인용문을 구별 할 수 있습니까?
- 25. Dojo DropDownButton, 버튼 대 클릭 화살표와 구별 할 수 있습니까?
- 26. "내"스푸핑 트래픽과 정상 트래픽을 어떻게 구별 할 수 있습니까?
- 27. MongoDB에서 컬렉션이 아닌 레코드의 하위 집합과 구별 할 수 있습니까?
- 28. Java의 instanceof가 기능적으로 동일한 클래스를 구별 할 수 있습니까?
- 29. /proc/partitions에있는 장치 유형을 어떻게 구별 할 수 있습니까?
- 30. 화면 시간 제한과 전원 버튼 누름을 구별 할 수 있습니까?