传入一个int数,要求将该数的低16位置1,高16位不变,将结果以十进制形式输出

这个题主要是懂得用“|”运算符,话不多说,直接上代码

   public static void way2(int n){
        int temp = n | 65535;
        System.out.println(temp);
    }

代码解析:先想明白用|运算符解决这个问题,然后就是了解|运算符的作用
|的作用:1|1=1,1|0=1,0|1=1,0|0=0
65535:0000 0000 0000 0000 1111 1111 1111 1111(ps:65535的二进制)
n与65535做|运算,因为65535高16位都是0,所以做|运算的结果圈看n的数值,所以不会影响n高16位的数值,达到了高16位保持不变,而65535低16位全是1,不管n的低16位是啥,与65535低16位上的1做|运算,就会全变成1,也就达到题目低16位置1的目的了。

### 回答1: 可以使用栈来实现进制转换。首先,将给定的十进制除以二,将余压入栈中。然后,重复此过程,直到商为零。最后,将栈中元素弹出,并将它们拼接起来,得到的结果就是该数二进制形式。 代码如下: ``` def decimal_to_binary(decimal_num): stack = [] while decimal_num > 0: remainder = decimal_num % 2 stack.append(remainder) decimal_num = decimal_num // 2 binary_num = "" while stack: binary_num += str(stack.pop()) return binary_num ``` 调用方法: ``` decimal_num = 10 print(decimal_to_binary(decimal_num)) ``` 输出:1010 ### 回答2: 栈是一种后进先出的据结构,可用于进制转换。进制转换是将一个字从一种进系统表示成另一种进系统的过程。本文以十进制二进制的转换为例,给出该过程的代码实现。 首先,创建一个顺序栈,用来存储二进制。然后,对于给定的十进制,不断地除以2,将余入栈,直到商为0为止。最后,从栈顶开始输出元素,即为所求的二进制。 以下是该算法的伪代码: ``` 1. 定义一个顺序栈和一个十进制n 2. while(n > 0) do a. 将n % 2 入栈 b. n = n / 2 3. while(栈不为空) do a. 将栈顶元素弹出并输出 ``` 以下是具体的Python实现: ```python class Stack: def __init__(self, size): self.top = -1 self.stack = [None] * size self.size = size def push(self, value): if self.top < self.size - 1: self.top += 1 self.stack[self.top] = value def pop(self): if self.top > -1: value = self.stack[self.top] self.top -= 1 return value def decimal_to_binary(decimal): stack = Stack(100) while decimal > 0: remainder = decimal % 2 stack.push(remainder) decimal //= 2 while stack.top > -1: print(stack.pop(), end='') # 测试 decimal_to_binary(10) # 输出:1010 ``` 这段代码中,我们定义了一个Stack类作为栈的据结构。该类的初始化方法需要传入栈的大小size,定义了top为栈顶的位置,stack为栈组,size为栈的大小。该类还定义了push和pop方法,实现了入栈和弹出栈顶元素的功能。 接着,我们定义了一个decimal_to_binary方法,该方法接收一个十进制作为参,完成了十进制二进制的转换。该方法内部实现了一个while循环,不断将余入栈,并将商更新为整除操作的结果,直到商为0为止。之后,又定义了一个while循环,通过弹出栈顶元素并输出的方式,输出二进制。 最后,我们进行了一个简单的测试,将十进制10作为参传入decimal_to_binary方法中,输出了1010,符合十进制10的二进制表示。 ### 回答3: 进制转换是在计算机编程中常见的问题,其中十进制二进制是最常见的一种。利用栈的据结构可以非常方便地实现这个任务。 顺序栈是一种非常简单常用的栈的存储结构,它的底层实现通常是一个组。对于一个十进制,我们可以通过每次除以2的操作来逐计算其对应的二进制。这个过程可以用一个循环来实现。 具体实现过程是这样的:首先创建一个空的顺序栈,每次将该整除以2的余入栈,然后将该整更新为除以2的商。重复这个过程直到该整为0。最后依次弹出栈中的元素,输出即可得到对应的二进制。 以下是具体的代码实现: ```python class Stack: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[len(self.items)-1] def size(self): return len(self.items) def decimalToBinary(decimal): ''' 将十进制转换为二进制串并输出 ''' s = Stack() while decimal > 0: remainder = decimal % 2 s.push(remainder) decimal = decimal // 2 # 依次弹出栈中元素 binary = '' while not s.isEmpty(): binary += str(s.pop()) print(binary) ``` 以上就是使用顺序栈实现十进制二进制的过程。我们可以将上述代码放入一个文件中,然后在命令行中输入一个十进制作为参来进行测试: ```shell $ python decimalToBinary.py 15 1111 ``` 程序成功输出了15的二进制表示1111。这个算法可以轻松地扩展到其它进制的转换中,只需要将除以2的操作改为除以目标进制的操作即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值