java 二进制加法运算_java实现二进制的加法
先看打印结果在看代码比较好理解。结果在最下面的位置。
总结:讲解了二进制的按位异域、按位与、左移的运算规则。并通过次3种算法得到2个数相加的结果。二进制应该还有其他算法,由于知识浅薄就不知道了。
代码:
public static void main(String[] args){
int a=11,b=9;//初始化要执行加法的值
System.out.println("===开始二进制运算===");
add(a,b);
System.out.println("===二进制运算结束===");
}
/**
* 将二进制的数据打印出来
* @param binars 需要打印的二进制值
* @param paramName 需要打印的参数名称
* @return 返回打印的字符串
*/
public static String printBnary(StringBuilder binars,int param){
StringBuilder binarsRe=new StringBuilder();
String[] strs=binars.toString().split(",");
int strLength=strs.length;
while (strLength>=1){
binarsRe.append(strs[strLength-1]+" ");
strLength--;
}
return binarsRe.toString();
}
/**
* 十进制转换为二进制输出
* @param a 要转换的十进制数
* @param binars 接收转换后的二进制数据
* @param paramName 需要打印的参数名称
* @return
*/
public static String DecimalTransBinary(int a,StringBuilder binars,int param){
int rem=a%2;//取余数
int base=a/2;//取基数
/**
* 物流是余数和基数都必须除尽为0
*/
if(base>0 || rem>0){
//将所有的余数都添加到字符串中使用,隔开在打印是使用
binars.append(rem+",");
DecimalTransBinary(base,binars,param);
}
//十进制转换二进制成功后,将二进制数据打印出来
return printBnary(binars,param);
}
/**
* 十进制加法,解释如何使用二进制实现的
* @param a 执行加法的参数
* @param b 执行加法的参数
* @return 返回加法成功后的整数
*/
public static int add(int a,int b){
//对需要相加的数据输出为二进制
StringBuilder binars=new StringBuilder();
String aStr=DecimalTransBinary(a,binars,a);
//将stringBuilder数据输出到控制台
binars.setLength(0);
String bStr=DecimalTransBinary(b,binars,b);
int res=a;
//按为异域的二进制运算
int xor=a^b;
System.out.println("");
System.out.println("按位异域(^):二进制数据的相同位不同则为1,相同则为0。");
System.out.println(a+"的二进制值:"+aStr);
System.out.println(b+"的二进制值:"+bStr);
System.out.println("参数:"+a+" 参数:"+b+" 进行"+a+"^"+b+":");
binars.setLength(0);
String xorStr=DecimalTransBinary(xor,binars,xor);
System.out.println(aStr+"^"+bStr+"="+xorStr);
System.out.println("按位异域后得到的二进制值:"+xorStr);
System.out.println("按位异域后得到的十进制值:"+xor);
//按位与的二进制运算和左移一位的值
int forward=(a&b)<<1;
System.out.println();
System.out.println("按位与(&):二进制数据的相同位都为1则为1,若有一个不为1则为0。");
System.out.println("左移(<
System.out.println("10110转换为十进制就是:22。左移用十进制解释就是,11乘以2的1次方的结果。11<<2就是11乘以2的次方的结果。");
System.out.println("参数:"+a+" 参数:"+b+" 进行("+a+"&"+b+")<<1:");
binars.setLength(0);
String forwardStr=DecimalTransBinary(forward,binars,forward);
System.out.println("("+aStr+"&"+bStr+")<<1="+forwardStr);
System.out.println("按位与后得到的二进制值:"+forwardStr);
System.out.println("按位与后得到的十进制值:"+forward);
System.out.println();
if(forward!=0){
System.out.print("("+a+"&"+b+")<<1="+forward+"运算结果不为0,");
System.out.println("将"+a+"^"+b+"运算的结果值:"+xor+";("+a+"&"+b+")<<1运算的结果值:"+forward+"。继续重复以上运算。");
res=add(xor,forward);
}else{
System.out.println("("+a+"&"+b+")<<1="+forward+"运算结果为0;"+a+"^"+b+"按位异域的运算结果就是最终的和:"+xor);
res=xor;
}
return res;
}
结果:
===开始二进制运算===
按位异域(^):二进制数据的相同位不同则为1,相同则为0。
11的二进制值:1 0 1 1
9的二进制值:1 0 0 1
参数:11 参数:9进行11^9:
1 0 1 1 ^1 0 0 1 =1 0
按位异域后得到的二进制值:1 0
按位异域后得到的十进制值:2
按位与(&):二进制数据的相同位都为1则为1,若有一个不为1则为0。
左移(<
10110转换为十进制就是:22。左移用十进制解释就是,11乘以2的1次方的结果。11<<2就是11乘以2的次方的结果。
参数:11 参数:9进行(11&9)<<1:
(1 0 1 1 &1 0 0 1 )<<1=1 0 0 1 0
按位与后得到的二进制值:1 0 0 1 0
按位与后得到的十进制值:18
(11&9)<<1=18运算结果不为0,将11^9运算的结果值:2;(11&9)<<1运算的结果值:18。继续重复以上运算。
按位异域(^):二进制数据的相同位不同则为1,相同则为0。
2的二进制值:1 0
18的二进制值:1 0 0 1 0
参数:2 参数:18进行2^18:
1 0 ^1 0 0 1 0 =1 0 0 0 0
按位异域后得到的二进制值:1 0 0 0 0
按位异域后得到的十进制值:16
按位与(&):二进制数据的相同位都为1则为1,若有一个不为1则为0。
左移(<
10110转换为十进制就是:22。左移用十进制解释就是,11乘以2的1次方的结果。11<<2就是11乘以2的次方的结果。
参数:2 参数:18进行(2&18)<<1:
(1 0 &1 0 0 1 0 )<<1=1 0 0
按位与后得到的二进制值:1 0 0
按位与后得到的十进制值:4
(2&18)<<1=4运算结果不为0,将2^18运算的结果值:16;(2&18)<<1运算的结果值:4。继续重复以上运算。
按位异域(^):二进制数据的相同位不同则为1,相同则为0。
16的二进制值:1 0 0 0 0
4的二进制值:1 0 0
参数:16 参数:4进行16^4:
1 0 0 0 0 ^1 0 0 =1 0 1 0 0
按位异域后得到的二进制值:1 0 1 0 0
按位异域后得到的十进制值:20
按位与(&):二进制数据的相同位都为1则为1,若有一个不为1则为0。
左移(<
10110转换为十进制就是:22。左移用十进制解释就是,11乘以2的1次方的结果。11<<2就是11乘以2的次方的结果。
参数:16 参数:4进行(16&4)<<1:
(1 0 0 0 0 &1 0 0 )<<1=
按位与后得到的二进制值:
按位与后得到的十进制值:0
(16&4)<<1=0运算结果为0;16^4按位异域的运算结果就是最终的和:20
===二进制运算结束===
java 二进制加法运算_java实现二进制的加法相关推荐
- java int位运算_java中int的表示方法,位运算的解析
随着时代的不断发展,越来越多的人开始投入到java的学习当中来.今天就来为大家介绍java中int的表示方法以及位运算的内容有哪些一起来看看吧. 首先我们需要知道的是,在java中,int是使用32位 ...
- java 无符号运算_java位运算和无符号运算
计算机在底层使用的是二进制补码进行运算. 计算规则: 正数的原码.反码.补码是其二进制本身. 负数的原码首先计算其二进制数,然后最高位使用1表示负数,反码是最高位不变其它位取反,补码是在反码的基础上进 ...
- java的幂运算_java中幂指数值的运算
说到幂指数的运算我们就会用到Math.pow(double a,double b),返回的结果是a的b次方. 这个方法可以满足我们大多数幂指数的计算,但是每次访问的值和传入的值都是double,自己不 ...
- java 四则混合运算_Java实现四则混合运算代码示例
使用栈来实现,可以处理运算优先级. 使用自然四则运算表达式即可,如:4+(3*(3-1)+2)/2.无需把表达式先转换为逆波兰等形式. package com.joshua.cal; import j ...
- java程序设计复数运算_Java实现复数运算
<Java实现复数运算>由会员分享,可在线阅读,更多相关<Java实现复数运算(2页珍藏版)>请在人人文库网上搜索. 1.定义一个复数类complex,它的内部具有两个实例变量 ...
- java四则混合运算_Java实现四则混合运算代码示例
使用栈来实现,可以处理运算优先级. 使用自然四则运算表达式即可,如:4+(3*(3-1)+2)/2.无需把表达式先转换为逆波兰等形式. package com.joshua.cal; import j ...
- java代码二进制转为十六进制_Java 中二进制转换成十六进制的两种实现方法
Java 中二进制转换成十六进制的两种实现方法 每个字节转成16进制,方法1 /** * 每个字节转成16进制,方法1 * * @param result */ private static Stri ...
- java 二进制流转图片_java转发二进制图片流【原】
packagecom.rosellete.iescp.cshop.tool.http;importjavax.servlet.http.HttpServletResponse;import java. ...
- java long 除法运算_java基础知识学习文档二
一.基本概念 1 对象: 对象是Java类的一个实例,它有状态.属性.行为.如:一个人,具体的某一个人是人类的一个实例.这个人他有名字.性别.年龄等属性,他可以吃饭.说话.走路等行为. 2 类: 类是 ...
最新文章
- react 渲染道具_在React中学习分解道具的基础
- hdu4561 bjfu1270 最大子段积
- ajax请求成功后返回值如何赋值给js变量
- python URLError,HTTPError 的异常处理
- [GCN] Modification of Graph Convolutional Networks in PyTorch
- 百度安全专家盘点:非官方购火车票渠道 几乎都不靠谱
- Jmeter安装及配置
- 如何让Linux上的GPG error 无法验证的这个公钥 NO_PUBKEY D97A3AE911FXXXXX 出错信息消失?
- python字符串出栈方法_Python学习之路_day_04(字符串与列表的内置方法)
- mschart 控件
- Java 读取扫描枪
- 新媒传信Java_新媒小课堂——多媒体、流媒体、富媒体
- 光栅渲染器(二)画线
- Gdevops峰会北京站归来
- torch.load()出现ModuleNotFoundError错误
- C++继承详解(三):抽象类和纯虚函数、多重继承与虚基类的底层实现原理详解
- AD20 指定层PCB图纸1:1打印步骤笔记
- esp-idf手动设置系统时间
- 运用python求次方
- 数字图像处理第三章-----灰度变换