首页 > 编程知识 正文

java二进制转十进制,二进制加法java

时间:2023-05-06 05:21:20 阅读:154609 作者:2036

二进制整数的Java实现

如果将任意二进制数“无论在哪个位置”相加,则只有四种情况。 这些如下所示。

0=0

1 0=0 1=1

1 1=10=0向上舍入1

11从1 1 1=11=1向上位进位1

//整数的二进制加法

publicstaticstringadd(stringB1,String b2 ) {

int len1=b1.length (;

int len2=b2.length (;

String s1=b1;

String s2=b2;

string buffer sb1=new string buffer (;

//先把位数少的二进制的高位填为零

if(len1len2) {

for(intI=0; I(len1-len2; I ) {

SB1.append(0;

}

SB1.append(B2;

s1=b1;

s2=sb1.toString (;

}elseif(len1len2) {

for(intj=0; j(len2-len1); j ) {

SB1.append(0;

}

SB1.append(B1;

s1=sb1.toString (;

s2=b2;

}

//进位

输入标志=0;

string buffer sb2=new string buffer (;

for(intz=S1.Length ) )- 1; z=0; z----) {

//字符’0’对应的ASCII进制数为48

//根据情况判断

if () S1.charat(z )- 48 )==0) S2.charat )- 48 )==0)

sb2.append(flag );

flag=0;

连续;

}

if () S1.charat(z )- 48 )==0) S2.charat )- 48 )==1 flag==0)|(S1.charat(z )- 48 ) ()

SB2.append(1;

flag=0;

连续;

}

if () ) S1.charat(z )- 48 )==0) S2.charat )- 48 )==1 flag==1)|(S1.charat )- 48 ) ) )

SB2.append(0;

flag=1;

连续;

}

if(S1.charat(z )- 48 )==1) S2.charat )- 48 )==1 flag==0) {

SB2.append(0;

flag=1;

连续;

}

if(S1.charat(z )- 48 )==1) S2.charat )- 48 )==1 flag==1) {

SB2.append(1;

flag=1;

}

}

if(flag==1) {

sb2.append(flag );

}

//倒置

sb2.reverse (;

return sb2.toString (;

}

测试

publicstaticvoidmain (string [ ] args ) {

system.out.println(add('101 ',' 011 ' ) );

system.out.println(add('1001 ',' 1011 ' ) );

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。