【二进制转换】十进制 转 二进制 (含相关题型)

简介: 【二进制转换】十进制 转 二进制 (含相关题型)


1. &运算符 介绍

& 运算符,也称为按位与运算符,是一种位运算符。它用于对两个整数进行位运算,并生成一个新的整数,其中每个对应位上的值只有在两个操作数对应位上都为 1 的情况下才为 1,否则为 0。

按位与运算符使用符号“&”表示。它逐位比较两个操作数的每一位,并根据下面的规则生成结果:

  • 如果两个操作数的对应位都为 1,则结果的对应位为 1。
  • 如果两个操作数的对应位之一为 0,则结果的对应位为 0。

换句话说,只有当两个操作数的对应位上都为 1 时,结果才为 1。否则,结果为 0。


示例:

假设我们有两个二进制数:10111001 和 11001100。使用按位与运算符将它们进行位运算,结果是 10001000,它是两个操作数的对应位进行按位与运算得到的值。

10111001 
& 11001100
  10001000




2. << 运算符 介绍

<< 运算符是一种位左移运算符,用于将一个整数的所有位向左移动指定的位数。

左移运算符将二进制数的所有位向左移动,并在右侧用零填充。每一次的左移操作都会使操作数乘以 2 的 n 次幂,其中 n 是左移的位数。


示例

假设我们有一个整数 x = 5,用二进制表示为 00000101,我们可以使用左移运算符将其向左移动两位,结果为 00010100,用十进制表示为 20。

x = 5 << 2;




3. 十进制 转 二进制

public class s01 {
  //转换、打印
  public static void print(int num) {
    //遍历32位(int在底层就是通过32位二进制存储的。)
    for(int i = 31;i >= 0;--i) {
      //通过 &运算 获得num的二进制形式
            //1 << 1 —— 二进制:0010
            //1 << 2 —— 二进制:0100
            //1 << 3 —— 二进制:1000
      System.out.print((num & (1 << i)) == 0?"0":"1");
    }
    System.out.println();
  }

注意:

  1. int在底层就是通过32位二进制存储的。




4. 面试题 05.06. 整数转换 - 力扣(LeetCode)

题目


作答

class Solution {
    public int convertInteger(int A, int B) {
        int ans = 0;
        //遍历获取二进制形式的32个数位
        for(int i = 0;i < 32;++i){
            int a = (A & (1 << i));
            int b = (B & (1 << i));
            //遇到不相同的数位,就是需改变的数位
            if(a != b) ++ans;
        }
        return ans;
    }
}




目录
相关文章
【软考学习1】数据表示——进制转换,R进制转10进制 和 10进制转R进制
【软考学习1】数据表示——进制转换,R进制转10进制 和 10进制转R进制
273 0
【软考学习1】数据表示——进制转换,R进制转10进制 和 10进制转R进制
|
1月前
二进制转换为十进制
【10月更文挑战第27天】二进制转换为十进制。
87 8
|
1月前
八进制转换为十进制
【10月更文挑战第27天】八进制转换为十进制。
66 2
|
6月前
|
存储
详细讲解,进制转换
详细讲解,进制转换
105 0
|
7月前
|
C语言
进制转换间的那点事
进制转换间的那点事
|
算法
二进制、八进制、十六进制与十进制的相互关系
二进制、八进制、十六进制与十进制的相互关系
进制转换(二进制,八进制,十进制,十六进制)涵盖整数与小数部分,内容的图片全为手写【详细图解】
进制转换(二进制,八进制,十进制,十六进制)涵盖整数与小数部分,内容的图片全为手写【详细图解】
|
小程序
ABCDEFG(进制转换::小转大)
ABCDEFG(进制转换::小转大)
96 0