二进制描述仅以1和0表示的数字。学习二进制仅仅是意味着学习一种新的计算和计算数字的方式。在编码的大多数情况下,您实际上不需要了解二进制。但是,在面试中可能遇到的一些编码挑战将要求您操纵二进制数。以此为契机,学习一种新颖的技能并开始您的求职准备。
答案 0 :(得分:0)
如果您的问题只是获取代表无符号值的位的字符串,则可以使用以下伪代码完成此操作:
accumulator = 0
for each character in string:
multiply accumulator by two
if character is '1':
add one to accumulator
例如,字符串1101
的处理方式如下:
character accumulator
--------- -----------
0
1 1 (0 * 2 + 1)
1 3 (1 * 2 + 1)
0 6 (3 * 2 + 0)
1 13 (6 * 2 + 1)
将其翻译成几乎任何任何具体程序语言应该相对容易。
答案 1 :(得分:-1)
在Java中,将二进制字符串转换为整数的代码为:-
int strToInt(String str) {
int sum=0;
for(int i = str.length()-1; i >= 0; i--) {
if(str.charAt(i) == '1')
sum+=Math.pow(2, str.length() - 1 - i);
}
return sum;
}
我们知道二进制字符串将转换为以下内容:-
int('10110')= 1 * 2 4 + 0 * 2 3 + 1 * 2 2 + 1 * 2 < sup> 1 + 0 * 2 0
要考虑的是有效地将2 length-1-index 与相应的位相乘。
代码将按以下方式运行:-
index 0 1 2 3 4
length-1-index 4 3 2 1 0
2^(length-1-index) 2^4 2^3 2^2 2^1 2^0
Corresponding Bits of bitstring 1 0 1 1 0
Multiplication of the above two columns 16 0 4 2 0
总结最后一行,我们得到22,这是相应的整数。