이 처음부터 잘못
String lastdigits="1000110";
int lastdigitsint=Integer.parseInt(lastdigits);
마지막 숫자 값은 1,000,110 될 것입니다 - 열 houndred 수백만 열 먹으 렴 그래서 이진 표현은 무엇을 기대에서 멀리 다르다. 당신이 원하는 것은 단순히 :
int lastdigitsint=0b1000110;
이 적절한 진 정수입니다. 그래서
:
public static void main(String[] args) {
String lastdigits = "1000110";
int overflow = 0b11;
int lastdigitsint = Integer.parseInt(lastdigits);
int result = lastdigitsint^overflow;
System.out.println("Dec:" + lastdigitsint);
System.out.println("Dec:" + overflow);
System.out.println("Dec:" + result);
System.out.println("Bin" + Integer.toBinaryString(lastdigitsint));
System.out.println("Bin" + Integer.toBinaryString(overflow));
System.out.println("Bin" + Integer.toBinaryString(result));
System.out.println("And now the proper way:");
lastdigitsint = 0b1000110;
result = lastdigitsint^overflow;
System.out.println("Dec:" + lastdigitsint);
System.out.println("Dec:" + overflow);
System.out.println("Dec:" + result);
System.out.println("Bin" + Integer.toBinaryString(lastdigitsint));
System.out.println("Bin" + Integer.toBinaryString(overflow));
System.out.println("Bin" + Integer.toBinaryString(result));
}
결과 : 나에게 합법적
Dec:1000110
Dec:3
Dec:1000109
Bin:11110100001010101110
Bin:11
Bin:11110100001010101101
And now the proper way:
Dec:70
Dec:3
Dec:69
Bin:1000110
Bin:11
Bin:1000101
솔기.
이 예제를 간단하게 단순화하고 하드 코딩 된 값 –
을 제공 할 수 있습니다. 나는 StackOverflow를 처음 사용하기 때문에 여기서 규칙을 배우고있다. 안내 주셔서 감사합니다! – kudesiaji
또한 최소한의 코드를 편집했습니다. 예, IntelliJ에서 디버깅했는데 올바른 값이 'lastdigits'변수와 'overflow'변수에 저장되고 있다고 확신합니다. – kudesiaji