这是我参与「第七届青训营 」伴学笔记创作活动的第4天
今天的代码练习题目是:
二进制反码转换问题
问题描述
小C在学习二进制运算,他了解到每个非负整数都有其二进制表示。例如,整数 5 可以被表示为二进制 "101",整数 11 可以被表示为二进制 "1011",并且除了 N = 0 外,任何二进制表示中都不含前导零。
二进制的反码表示是将每个 1 变为 0,每个 0 变为 1。例如,二进制数 "101" 的二进制反码为 "010"。现在小C想知道,给定一个十进制数 N,它的二进制反码对应的十进制数是多少。
测试样例
样例1:
输入:
N = 5
输出:2
样例2:
输入:
N = 10
输出:5
样例3:
输入:
N = 0
输出:1
题目解析
其实这是一道特别简单的题目,第一步是将十进制转换为二进制,第二步是按位取反,第三步是取反的二进制转换为十进制。所以,这道题的重点是注意编写代码时的细心与仔细。
代码如下:
public class Main { public static int solution(int N) { String binaryString = Integer.toBinaryString(N); //System.out.println(binaryString); StringBuilder binaryStringBuilder = new StringBuilder(binaryString); for (int i = 0; i < binaryStringBuilder.length(); i++) { if (binaryStringBuilder.charAt(i) == '1') { binaryStringBuilder.setCharAt(i, '0'); } else { binaryStringBuilder.setCharAt(i, '1'); } } //System.out.println(binaryStringBuilder); int result = Integer.parseInt(binaryStringBuilder.toString(), 2); return result; }
public static void main(String[] args) {
System.out.println(solution(5) == 2 ? "Pass" : "Fail"); // 输出 Pass
System.out.println(solution(10) == 5 ? "Pass" : "Fail"); // 输出 Pass
System.out.println(solution(0) == 1 ? "Pass" : "Fail"); // 输出 Pass
}
}
学习方法与心得
今天想和大家分享的是一些适合新手的编程入门书籍推荐:
1. 《Python 编程从入门到实践》:这本书如其名,简明清晰地讲解了 Python 所需的基本知识,同时穿插实战演练,可帮助新手更好地理解 Python。
2. 《父与子的编程之旅:与小卡特一起学 Python》:适合各个年龄段的读者,即使是孩子也能轻松阅读。它通过可爱的漫画和有趣的例子介绍了 Python 编程的基本概念。
3. 《Java 核心技术·卷 1:基础知识(原书第 9 版):是 Java 领域有影响力的著作之一,由具有多年教学与研究经验的专家撰写,与《Java 编程思想》齐名,适合 Java 初学者。
4. 《C Primer Plus》:专为零基础读者撰写,是 C 语言学习的经典教材。这本书对技术细节、广度和深度的讲解都很到位,且讲解方式针对自学用户设计。
5. 《大话数据结构》:数据结构是计算机基础课程中的重要部分,本书把一些复杂抽象的概念用简单有趣的语言讲清楚,有助于读者理解数据结构。
6. 《计算机网络:自顶向下方法》:采用独特的自顶向下方法讲授计算机网络原理及其协议,更贴近生活和思考方式,脉络和结构清晰,是世界上流行的计算机网络教科书之一。
7. 《深入理解计算机系统》:从程序员视角剖析计算机系统的实现细节,帮助读者深刻理解程序的行为,融会贯通计算机系统相关知识,是理解计算机系统的首选书目。
8. 日系图解三件套:包括《计算机是怎样跑起来的》《网络是怎样连接的》《程序是怎样跑起来的》,以图解趣味版的形式讲解硬件&软件基础知识、网络基础知识和编程基础知识,通俗易懂。
编程的学习需要不断实践和练习,在阅读书籍的同时,也要多动手敲代码,尝试解决实际问题,这样可以更好地掌握编程技能。此外,网上也有丰富的编程学习资源,例如教程、视频等,可以结合使用以提高学习效果。同时,选择适合自己的编程语言也很重要,可以根据自己的兴趣、学习目的以及该语言的应用领域等因素进行考虑。