精华内容
下载资源
问答
  • 先看打印结果在看代码比较好理解。结果在最下面的位置。总结:讲解了二进制的按位异域、按位与、左移的运算规则。并通过次3种算法得到2个数...//初始化要执行加法的值System.out.println("===开始二进制运算===");a...

    先看打印结果在看代码比较好理解。结果在最下面的位置。

    总结:讲解了二进制的按位异域、按位与、左移的运算规则。并通过次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实现任意两个二进制数(不论在什么位置)相加,只可能出现4种情况。它们是:0+0=01+0=0+1=11+1=10=0+向高一位的进位11+1+1=11=1+向高一位的进位1//整数二进制相加public static String add(String b1,...

    二进制整数的Java实现

    任意两个二进制数(不论在什么位置)相加,只可能出现4种情况。它们是:

    0+0=0

    1+0=0+1=1

    1+1=10=0+向高一位的进位1

    1+1+1=11=1+向高一位的进位1

    //整数二进制相加

    public static String add(String b1, String b2) {

    int len1 = b1.length();

    int len2 = b2.length();

    String s1 = b1;

    String s2 = b2;

    StringBuffer sb1 = new StringBuffer();

    //先将位数较少的二进制高位补零

    if(len1 > len2) {

    for(int i = 0; i < (len1 - len2); i++) {

    sb1.append(0);

    }

    sb1.append(b2);

    s1 = b1;

    s2 = sb1.toString();

    } else if(len1 < len2) {

    for(int j = 0; j < (len2 - len1); j++) {

    sb1.append(0);

    }

    sb1.append(b1);

    s1 = sb1.toString();

    s2 = b2;

    }

    //进位

    int flag = 0;

    StringBuffer sb2 = new StringBuffer();

    for(int z = s1.length() - 1; z >= 0; z--) {

    //字符’0’的对应的ASCII十进制是48

    //分情况判断

    if((s1.charAt(z) - 48) == 0 && (s2.charAt(z) - 48) == 0) {

    sb2.append(flag);

    flag = 0;

    continue;

    }

    if(((s1.charAt(z) - 48) == 0 && (s2.charAt(z) - 48) == 1 && flag == 0) || ((s1.charAt(z) - 48) == 1 && (s2.charAt(z) - 48) == 0 && flag == 0)) {

    sb2.append(1);

    flag = 0;

    continue;

    }

    if(((s1.charAt(z) - 48) == 0 && (s2.charAt(z) - 48) == 1 && flag == 1) || ((s1.charAt(z) - 48) == 1 && (s2.charAt(z) - 48) == 0 && flag == 1)) {

    sb2.append(0);

    flag = 1;

    continue;

    }

    if((s1.charAt(z) - 48) == 1 && (s2.charAt(z) - 48) == 1 && flag == 0) {

    sb2.append(0);

    flag = 1;

    continue;

    }

    if((s1.charAt(z) - 48) == 1 && (s2.charAt(z) - 48) == 1 && flag == 1) {

    sb2.append(1);

    flag = 1;

    }

    }

    if(flag == 1) {

    sb2.append(flag);

    }

    //倒置

    sb2.reverse();

    return sb2.toString();

    }

    测试

    public static void main(String[] args) {

    System.out.println(add("101", "011"));

    System.out.println(add("1001", "1011"));

    }

    0438982e9802f6647c2455832965cff3.png

    a192092e22b314cb5cf24015294ee31a.png

    展开全文
  • 展开全部我有点忙,所以没时间给你慢慢改。...import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator implements ActionListener{private double data1=0.0,data2=0.0;private ...

    展开全部

    我有点忙,所以没时间给你慢慢改。不过我这儿有一个计算器的代码,你不介意的话用吧!

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    public class Calculator implements ActionListener{

    private double data1=0.0,data2=0.0;

    private String t_content;

    boolean number=false;

    //key用来标示用62616964757a686964616fe59b9ee7ad9431333264656665户所按下的按钮即加减乘除

    //key为0标示+,为1表示-,为2表示*,为3表示/

    short key=-1;

    //pkey的取值为-1~5

    //pkey为-1表示第一次按下=按钮,为5说明不是第一次按下=按钮

    //pkey为其他值0,1,2,3时分别代表+,-,*,/

    short pkey=-1;

    Frame frame=new Frame("Calculator");//定义标题为Calculator的窗体

    TextField textfield=new TextField(30);//定义计算机

    //定义backspace,ce,c0按钮

    Button backspace=new Button("Backspace");

    Button ce=new Button("CE");

    Button c0=new Button("C");

    //定义面板,其中backspace,ce,c0按钮和计算机兰textfeild放在面板p1中

    //其余按钮放在面板p2中

    Panel p1=new Panel();

    Panel p2=new Panel();

    //定义界面上的按钮数组,即除去backspace,ce,c0按钮的所有按钮

    String names[]=;

    Button bb[]=new Button[names.length];

    public static void main(String[] args){

    Calculator cal=new Calculator();

    cal.go();

    }

    public void go(){

    frame.setSize(300,200);

    frame.setLayout(new BorderLayout());

    Font fonts=new Font("楷体_GB2312",Font.PLAIN,12);

    //设置面板p1的字体和布局管理类型,将textfeild对象添加到面板中

    p1.setFont(fonts);

    p1.setLayout(new GridLayout(2,1,5,10));

    textfield.setFont(fonts);

    p1.add(textfield,null);

    //backspace,ce,c0按钮注册addActionListener方法

    backspace.addActionListener(this);

    ce.addActionListener(this);

    c0.addActionListener(this);

    //将backspace,ce,c0按钮添加到p1面板中

    p1.add(backspace,null);

    p1.add(ce,null);

    p1.add(c0,null);

    //设置面板p2的布局管理器类型为GridLayout

    p2.setLayout(new GridLayout(4,5,5,5));

    //为按钮组中的按钮注册addActionListener方法

    for(int i=0;i

    bb[i]=new Button(names[i]);

    p2.add(bb[i]);

    bb[i].addActionListener(this);

    }

    //设置面板p1和面板p2在窗体中的位置

    //面板p1在窗体的North方向,面板p2在窗体的South方向

    frame.add(p1,BorderLayout.NORTH);

    frame.add(p2,BorderLayout.SOUTH);

    frame.setVisible(true);

    //当单击关闭按钮时退出系统

    frame.addWindowListener(new WindowAdapter(){

    public void windowClosing(WindowEvent e){

    System.exit(0);

    }

    });

    }

    public void actionPerformed(ActionEvent ae){

    String s;

    //通过ActionEvent类的getActionCommand()方法,得出动作是由哪个按钮触发的。 s=ae.getActionCommand();

    //用户单击一次,计算栏里便去掉一个字符

    //先将计算栏里的字符清空,再添加除最好一个字符的字符串

    if(s.equals("Backspace")&&number){

    t_content=textfield.getText();

    textfield.setText("");

    for(int i=0;i

    char c=t_content.charAt(i);

    textfield.setText(textfield.getText()+c);

    }

    }

    //用户单击的是CE按钮,计算栏清空

    if(s.equals("CE")){

    textfield.setText("");

    number=false;

    }

    //用户单击的是C按钮

    if(s.equals("C")){

    textfield.setText("");

    data1=data2=0.0;

    number=false;

    }

    //用户单击的是sqrt按钮,其中负数不能被开方

    if(s.equals("sqrt")&&number){

    t_content=textfield.getText();

    if(t_content.charAt(0)=='-'){

    textfield.setText("负数不能被开方");

    number=false;

    }else{

    textfield.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(t_content))));

    }

    }

    //用户单击的是1/x求倒数按钮,求倒数时分母不能为0

    if(s.equals("1/x") && number){

    t_content=textfield.getText();

    if(t_content.equals("0")){ textfield.setText("零不能求倒数");

    number=false;

    }else{

    textfield.setText(Double.toString(1/Double.parseDouble(t_content)));

    }

    }

    //用户单击的是%按钮

    if(s.equals("%")&&number){

    if(data2==0){

    t_content=textfield.getText();

    textfield.setText(t_content);

    }else{

    boolean g=false;

    for(int i=0;i

    if('.'==textfield.getText().charAt(i)){

    g=true;

    break;

    }

    //如果是Double 数,除100

    if(g=true){

    double dtemp=Double.parseDouble(textfield.getText());

    dtemp=dtemp/100.0;

    textfield.setText(Double.toString(dtemp));

    }

    //如果是int数但能被100整除,则去掉末尾两个0

    else{

    if(Integer.parseInt(textfield.getText())%100==0){

    int itemp=Integer.parseInt(textfield.getText());

    itemp/=100;

    textfield.setText(Integer.toString(itemp));

    }

    //如果是int数,但不能被100整除,则按Double数处理

    else{

    double dtemp=Double.parseDouble(textfield.getText());

    dtemp=dtemp/100.0;

    textfield.setText(Double.toString(dtemp));

    }

    }

    } }

    //对正负数字的处理

    if(s.equals("+/-")){

    t_content=textfield.getText();

    if(t_content.charAt(0)=='-'){

    textfield.setText("");

    String content;

    for(int i=1;i

    textfield.setText(textfield.getText()+t_content.charAt(i));

    }

    }else{

    textfield.setText("-"+t_content);

    }

    }

    //所按下的按钮为+按钮

    if(s.equals("+")){

    switch(pkey){

    case 0:

    data2+=Double.parseDouble(textfield.getText());

    break;

    case 1:

    data2+=Double.parseDouble(textfield.getText());

    break;

    case 2:

    data2+=Double.parseDouble(textfield.getText());

    break;

    case 3:

    if(textfield.getText().equals("0")){

    textfield.setText("除数不能为零");

    number=false;

    }else{

    key=-1;

    data2/=data1;

    textfield.setText(Double.toString(data2));

    break;

    }

    default:

    data2=Double.parseDouble(textfield.getText());

    }

    pkey=key=0;

    textfield.setText("");

    }

    //所按下的按钮为-按钮

    if(s.equals("-")){

    switch(pkey){

    case 0:

    data2+=Double.parseDouble(textfield.getText());

    break;

    case 1:

    data2+=Double.parseDouble(textfield.getText());

    break;

    case 2:

    data2+=Double.parseDouble(textfield.getText());

    break;

    case 3:

    if(textfield.getText().equals("0")){

    textfield.setText("除数不能为零");

    number=false;

    }else{

    key=-1;

    data2/=data1;

    textfield.setText(Double.toString(data2));

    break;

    }

    default:

    data2=Double.parseDouble(textfield.getText());

    }

    pkey=key=1;

    textfield.setText("");

    }

    //所按下的按钮为*按钮

    if(s.equals("*")){

    switch(pkey){

    case 0:

    data2+=Double.parseDouble(textfield.getText());

    break;

    case 1:

    data2+=Double.parseDouble(textfield.getText());

    break;

    case 2:

    data2+=Double.parseDouble(textfield.getText());

    break;

    case 3:

    if(textfield.getText().equals("0")){ textfield.setText("除数不能为零");

    number=false;

    }else{

    key=-1;

    data2/=data1;

    textfield.setText(Double.toString(data2));

    break;

    }

    default:

    data2=Double.parseDouble(textfield.getText());

    }

    pkey=key=2;

    textfield.setText("");

    }

    //所按下的按钮为/按钮

    if(s.equals("/")){

    switch(pkey){

    case 0:

    data2+=Double.parseDouble(textfield.getText());

    break;

    case 1:

    data2+=Double.parseDouble(textfield.getText());

    break;

    case 2:

    data2+=Double.parseDouble(textfield.getText());

    break;

    case 3:

    if(textfield.getText().equals("0")){

    textfield.setText("除数不能为零");

    number=false;

    }else{

    key=-1;

    data2/=data1;

    textfield.setText(Double.toString(data2));

    break;

    }

    default:

    data2=Double.parseDouble(textfield.getText());

    }

    pkey=key=3;

    textfield.setText("");

    }

    //所按下的按钮为=,求结果

    if(s.equals("=")&&number){

    //如果不是第一次按下=按钮

    if(pkey==5){

    switch(pkey){

    case 0:

    data2+=data1;

    textfield.setText(Double.toString(data2));

    break;

    case 1:

    data2-=data1;

    textfield.setText(Double.toString(data2));

    break;

    case 2:

    data2*=data1;

    textfield.setText(Double.toString(data2));

    break;

    case 3:

    if(textfield.getText().equals("0")){

    textfield.setText("除数不能为零");

    number=false;

    }else{

    data2/=data1;

    textfield.setText(Double.toString(data2));

    break;

    }

    }

    }

    //如果是第一次按下=按钮

    else{

    data1=Double.parseDouble(textfield.getText());

    switch(key){

    case 0:

    key=-1;

    data2+=Double.parseDouble(textfield.getText());

    textfield.setText(Double.toString(data2));

    break;

    case 1:

    key=-1;

    data2-=Double.parseDouble(textfield.getText());

    textfield.setText(Double.toString(data2)); break;

    case 2:

    key=-1;

    data2*=Double.parseDouble(textfield.getText());

    textfield.setText(Double.toString(data2));

    break;

    case 3:

    if(textfield.getText().equals("0")){

    textfield.setText("除数不能为零");

    number=false;

    }else{

    key=-1;

    data2/=Double.parseDouble(textfield.getText());

    textfield.setText(Double.toString(data2));

    break;

    }

    }

    }

    pkey=5;

    }

    //按下的按钮时数字按钮

    else{

    switch(s.charAt(0)){

    case'0':

    case'1':

    case'2':

    case'3':

    case'4':

    case'5':

    case'6':

    case'7':

    case'8':

    case'9':

    number=true;

    textfield.setText(textfield.getText()+s);

    break;

    //对.的处理

    case'.':

    t_content=textfield.getText();

    boolean g=false; //对计算机栏中的数据进行检验

    //如果其中有小数点,则用户单击该按钮时不在添加小数点

    for(int i=0;i

    if(t_content.charAt(i)=='.'){

    g=true;

    break;

    }

    }

    //数据中已经有小数点

    if(g==true)

    break;

    // 数据中没有小数点,当用户单击小数点时添加小数点

    if(g==false)

    textfield.setText(t_content+".");

    }

    }

    }

    private String Integer(String string) {

    // TODO Auto-generated method stub

    return null;

    }

    }

    2Q==

    已赞过

    已踩过<

    你对这个回答的评价是?

    评论

    收起

    展开全文
  • 计算机能够识别的数制是二进制数,二进制数是用0和1两个数字来表示的数,计算机的指令集也是采用二进制表示,机器语言就是用二进制数编写程序。可以借助十进制数来理解二进制数。在十进制中,每一位有0、1、2、3、4...

    计算机能够识别的数制是二进制数,二进制数是用0和1两个数字来表示的数,计算机的指令集也是采用二进制表示,机器语言就是用二进制数编写程序。

    可以借助十进制数来理解二进制数。在十进制中,每一位有0、1、2、3、4、5、6、7、8、9十个数码,因此基数为10,超过9就必须用多位数来表示,并遵循逢十进一的原则。一个任意的十进制数可以表示为:

    01eb2a36975dd6dc295f82e460e4a91c.png

    其含义是:

    c023edff4ce671e1f2f973c363558e09.png

    其中ai(i=0,1…,n),bj(j=1,2,…,m)是0、1、2、3、4、5、6、7、8、9十个数码中的一个。

    上式中相应于每位数字的10n称为该数字的权,其大小是以基数为底,数码所在位置的序号为指数的整数次幂,每位数字乘以其权所得的乘积之和即为所表示数的值。

    例如:

    4ec23d105df083c99b401a1152f35046.png

    十进制是人们最熟悉、最常用的一种数制,但它不是唯一的数制。例如计时用的时、分、秒就是按60进制计数的。基数为r的r进制数可以表示为:

    979239f86718688e310700d0975c69c9.png

    ● 二进制和十六进制数

    计算机就其本身来说是一个电器设备,为了能够快速存储、处理、传递信息,其内部采用了大量的电子元件,在这些电子元件中,电路的通和断、电压高低,这两种状态最容易实现,也最稳定、也最容易实现对电路本身的控制。计算机工程师将计算机所能表示这样的状态,用0,1来表示、即用二进制数表示计算机内部的所有运算和操作。二进制数运算非常简单,计算机很容易实现,所以计算机内部都用二进制编码进行数据的传送和计算。

    二进制的基数为2,只有0、1两个数码,并遵循逢二进一的原则,它的各位权是以2k表示的,因此二进制数

    ce30bcabb9f807fa80d208b583722043.png

    的值为:

    3099c117893386e2e232e590ef847989.png

    其中ai,bj为0、1两个数码中的一个。例如:

    4aad51ea64eb1ee70d569f1968790feb.png

    其中数的下标表示该数的基数r,即二进制的101101与十进制的45等值。

    n位的二进制数可以表示2n个数。例如:3位二进制数可以表示8个数,分别是:

    2ade351ecdecb60730bbe4b271e715ed.png

    而4位二进制数则能表示十进制的0 ~ 15共16个数如下:

    27f1d8a396ee26ac77c7fea5c1649739.png

    为了方便阅读及书写,经常使用十六进制来表示二进制数,十六进制的基数是16,数码为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,其中用A,B,C,D,E,F(字母不区分大小写)这六个字母来分别表示10,11,12,13,14,15。

    按同样的方法,可以很容易地掌握十六进制数的表示方法。例如:

    210179ccdb84d2cfa85ed033629a7c5d.png

    在计算机编程语言中,通常用数字后面跟一个英文字母来表示该数的数制。十进制一般用D(Decimal)、二进制数用B(Binary)、十六进制用H(Hexadecimal)来表示。例如:23AH、570D、110101B、0075H,…。当然也可以用这些字母的小写形式。

    ● 不同进制数的相互转换

    计算机中采用的是二进制,但用计算机解决实际问题时对数值的输入输出通常使用十进制,这就有一个十进制向二进制转换或由二进制向十进制转换的过程。也就是说,在使用计算机进行数据处理时首先必须把输入的十进制数转换成计算机所能接受的二进制数;计算机在运行结束后,再把二进制数转换为人们所习惯的十进制数输出。

    1、二进制数转换成十进制数

    把二进制数转换成十进制数就是用“按权相加法”,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。

    例:把二进制数110.11转换成十进制数。

    961c84b00db71d7ab4d10020c77387c8.png

    2、十进制数转换为二进制数

    前面“按权相加法”中,权的值在小数点左边和小数点右边是不一样的。所以,十进制数转换为二进制数时,整数和小数的转换方法也不同,一般先把十进制数的整数部分和小数部分分别转换后,再加以合并。

    十进制整数转换为二进制整数采用"除2取余,逆排序"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把所有余数按逆序排列,也就是把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。这就是所谓“除2取余,逆序排列”。

    例:将一个十进制数25转换为二进制数。

    3657a041dd6e8c84a3780bac3d765395.png

    3、十六进制和二进制之间的转换

    由于十六进制的基数是2的幂,所以这两种数制之间的转换是十分容易的。一个二进制数,只要把它从低位到高位每4位组成一组,直接用十六进制数来表示就可了。

    例:0011 0101 1011 1111 = 35BF

    3 5 B F

    反之,把十六进制数中的每一位用4位二进制数表示,就形成相应的二进制数了。

    A 1 9 C

    例:A19C = 1010 0001 1001 1100

    4、十六进制数转换为十进制数

    同二进制数转换十进制数相同,各位十六进制数与其对应权值的乘积之和即为与此十六进制相对应的十进制数。

    例:N = BF3CH

    2602eb19299eaf0ca2c9c2a2f89ecc62.png

    =11*4096+15*256+3*16+12*1

    =48956D

    十进制数转换为十六进制数也可使用除法进行。

    0f4d9c6539a3e7d4e8ebb9fd05905e4a.png

    二进制数是逢二进位的进位制,0、1是基本算符,计算机运算基础采用二进制。编程过程中经常会用到十六进制,而十进制的使用非常少,这是因为十六进制和二进制有天然的联系:四个二进制位可以表示从0到15的数字,这刚好是1个16进制位可以表示的数据,也就是说,将二进制转换成十六进制只要每4位进行转换就可以了。

    edc03bb83330048fc518520dcc59cc42.png

    1、将下列二进制数转换为十六进制数和十进制数:

    (1)10101 (2)10000000 (3)11111111

    2、用除法将下列十进制数转换为二进制数和十六进制数:

    (1)369 (2)10000 (3)4095

    3、将下列十六进制数转换为二进制数和十进制数:

    (1)FA (2)5B (3)F234

    展开全文
  • 主要内容进制及其转换标识符、关键字常量...人类使用二进制:计算机使用八进制和十六进制:为了更好的表示二进制(缩短二进制长度)各进制数之间的关系1.2 计算机为什么使用二进制物理上容易实现,可靠性强;运算简单...
  • Description 完成两个8位二进制数累加运算。如果最高位有进位,则加入最后一位。 Input 输入两个8位二进制数 Output 输出二进制数累加和。 Sample Input 10001011 01111100 Sample Output 00001000
  • 二进制常用运算简介:逻辑变量之间的运算称为逻辑运算二进制数1和0在逻辑上可以代表“真”与“假”、“是”与“否”、“有”与“无”。这种具有逻辑属性的变量就称为逻辑变量。 计算机的逻辑运算的算术运算的主要...
  • 思路:不用四则运算的话 就想到了用二进制。自己试着实现的时候,断档了。现在来看看学习到的思路:在我们列式计算的时候,各位依次相加,有进位的就进位,其实他是可以分开的,即a+b=(a和b各位相加的值)+(a和b...
  • 二进制常用运算 简介: 逻辑变量之间的运算称为逻辑运算二进制数1和0在逻辑上可以代表“真”与“假”、“是”与“否”、“有”与“无”。这种具有逻辑属性的变量就称为逻辑变量。 计算机的逻辑运算的算术运算的...
  • 它由两个基本字符0,1组成,二进制代码运算规律是逢二进一。 十进制1, 二进制也是1; 十进制2(1+1), 二进制为10; 十进制3(1+1+1), 二进制为11; 十进制4, 二进制为100…… 也就 是说,用二进制做十进制的加法时...
  • java实现二进制加法

    2018-07-12 17:11:00
    总结:讲解了二进制的按位异域、按位与、左移的运算规则。并通过次3种算法得到2个数相加的结果。二进制应该还有其他算法,由于知识浅薄就不知道了。 代码: public static void main(String[] args){ int a...
  • java_位运算加法_8位二进制

    千次阅读 2017-06-25 23:06:03
    package algorithm; import java.util.Scanner;... * @description: 八位二进制加法——题目来自技术问答我回答了他的问题觉得有必要,于是保存下来,本想放在code里但是觉得在里面看代码不是很方便  
  • 原理:k位k进制的数相加结果为0 ... //思路:开辟维数组空间, 输入数组 和 N 将数组中的数值依次转化成K进制数, 反向填入字符数组,求出其中第维度的长度 // 建立一个一维数组将 k进制的数加入
  • 用小写字母a-z代表0-25,进行两个数的加法运算 import java.util.ArrayList; import java.util.Scanner; public class Test { //全局变量进位 private static int jinWei = 0; public static void main...
  • 文章目录位运算二进制加法步骤例子代码演示 二进制加法需要用到位运算,所以先来复习下位运算。 位运算 运算 符号(java) 描述 位与 & 都为1,结果为1,否则为0。 位或 | 有一个为1或两个位都为1,...
  • 编辑:原则上,不同数量系统之间的转换是重复的“除法,余数,乘法,加法运算.我们来看一个例子:我们想将123从十进制转换为基数为3的数字.我们做什么?>取余数模3 – 将这个数字加到结果前面.>除以3.>如果数...
  • 主要是模拟自然语言中的加法运算步32313133353236313431303231363533e4b893e5b19e31333332633665骤。两个数相加,会得到一个结果,和一个进位的结果,然后将这个进位的结果后面加0补位,然后再和这个结果相加。如此...
  • 在进行位运算之前,先看看负数的二进制形式在计算机中是如何表示的,在计算机中所有的数字都是以二进制补码的形式表示的,其中第一位(最高位)是标志位,为0表示正数,为1表示负数,剩余的位才是用来表示数字部分的。...
  • 在进行位运算之前,先看看负数的二进制形式在计算机中是如何表示的,在计算机中所有的数字都是以二进制补码的形式表示的,其中第一位(最高位)是标志位,为0表示正数,为1表示负数,剩余的位才是用来表示数字部分的...
  • 运算异或操作也叫半加运算,其运算法则相当于不带进位的二进制加法;XOR 在英文里面的定义为either one (is one), but not both;异或的主要运用点:任何一个数和自身异或等于0,任何一个数和0异或等于0; 主要运用特性:...
  • Java 加法的位运算实现原理

    千次阅读 2018-03-10 18:07:20
    Java 加法的位运算实现原理 加法:a+b 以2+2为例 二进制为10 10 1、由a^b可得按位相加后没有进位的和及原位和;10^10=0 2、由a&b可得可以产生进位的地方;由(a&b)<<1得到进位后的值即进位和。(10...
  • 给定两个二进制字符串,返回他们的和 (用二进制表示)。输入为非空字符串且只包含数字 1 和 0。 输入: a = "11", b = "1" 输出: "100" 二、解法 (1)将两个字符串补齐,因为补齐才能进行比较。 (2)从末尾开始...
  • 现在系统实现中,加法操作与移位操作运算速度差距不大,但是移位操作在做乘法的时候要快于乘法(减法是变相的加法,除法是变相的乘法)。在一些对运算速度要求高的系统中,移位操作往往能增加不少的效率。 要掌握...
  • 二进制图文详解

    2017-09-11 14:18:47
    二进制图文详解 二进制Binary 2进制 逢二进一的计数规则。 在计算机内部,一切数据都是2进制的!! 2进制的数字 补码 补码本质是一种解决负数问题的算法。 1. 将数据的一半当做负数使用。 2. 补码在内存中是2...
  • 4.char型你要看它是做运算还是做连接 做运算就是ascii码值做加法运算 做连接就是字符串 一定要注意是写单引号‘ ’ 还是双引号“ ” 双引号就是字符串了 切记!当byte、char、short三种类型的变量做运算时,结果为...
  • 二进制求和 本题大意: 给定两个二进制字符串 >> 计算相加后的二进制字符串 这题让我想到了一道用二进制计算的题目 (可互为变形吧 ??) >> 给定两个十进制数,不允许使用加法等运算符, 求和 位...
  • 编程题——不用加减乘除做加法题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号具体要求:时间限制: C/C++ 1秒,其他语言2秒空间限制: C/C++32M,其他语言64M具体实现1、背景...
  • 1、问题:之前有同学问过这样一个问题:echo|awk '{print 3.99 -1.19 -2.80}'4.44089e-16类似的问题还有在 java 或者 javascript 中:23.53 + 5.88 + 17.64 = 47.0523.53 + 17.64 + 5.88 = 47.050000000000004为什么...
  • leetcode 67.二进制求和

    2020-06-23 07:11:18
    67.二进制求和 2020年6月23日 每日一题 题解 方法一 模拟加法运算。 本思路java代码示例: /*没有进位的时候记得进位归零 *作者@v7fgg *执行用时 :8 ms, 在所有 Java 提交中击败了16.42%的用户 *内存消耗 :40.1 ...
  • Java基础:06 进制

    2019-11-12 22:27:16
    1、类型 ...原码、反码、补码存在的原因:计算机无法识别符号位,所以存在原码、反码、补码三种形式,而且符号位参与运算,故计 算机只有加法没有减法 3、进制转换 十进制转换为二进制:取余法 十进制...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 177
精华内容 70
关键字:

java二进制加法运算

java 订阅