2021.01.06求整数的二进制形式
题目描述
输入[-128,127]内的整数,输出其二进制表示。提示,可使用按位与&
样例输入
7
样例输出
00000111
注意
十进制整数–>二进制形式
- 正数:–> 原码二进制
- 负数:–> 补码 = 2^n+原码
思路
- 由于负数要转成补码再进行加法运算,等价于两数相减。所以,以8个bite为例:n + (-n) = 0 --> 原码 + 补码 = 1000000000(由于超出了8位长度,才显示结果为0)
- 所以,要求补码,只需要 256 - 原码 ,即为负数的二进制表示形式。
代码
int n;String res = "",ans;
boolean isFu = false;
void test() {
Scanner cin = new Scanner(System.in);
n = cin.nextInt();
if(n < 0) {
n = 256 + n;
}
sove(n);
System.out.println(ans);
}
void sove(int n) {
while(n != 0) {
res = n%2 + res;
n = n/2;
}
res = "00000000" + res;
ans = res.substring(res.length()-8, res.length());
}