二进制代码

leetcode.67. 二进制求和

坚强是说给别人听的谎言 提交于 2019-12-10 04:08:03
给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" 看题目大意很简单,就是进制转换,一开始直接想到用Java内置转换函数,详细使用方法看 这里 ,然后代码很快写好,提交测试报错: Line 3: java.lang.NumberFormatException: For input string: “10100000100100110110010000010101111011011001101110111111111101000000101111001110001111100001101” public String addBinary(String a, String b) { int sum = Integer.parseInt(a.trim(),2)+Integer.parseInt(b.trim(),2); String s = Integer.toBinaryString(sum); return s; } 原本以为是简单的题目就没考虑这么多,没想到还卡精度问题,这测试样例明显超支了int长度,哇,真的是,想想又不想写进制转换的代码,那就改用Python吧

从根到叶的二进制数之和

*爱你&永不变心* 提交于 2019-12-09 22:56:17
题目 给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。 对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。 以 10^9 + 7 为模,返回这些数字之和。 思想 递归,从根节点开始,num表示根节点到当前节点路径所表示的数字大小,num每递归一次,便乘以2并且加上当前节点的值,当递归到叶子结点之后,加入总和sum中。 代码 /** * Definition for a binary tree node. * public class TreeNode { * * int val; * * TreeNode left; * * TreeNode right; * * TreeNode(int x) { val = x; } * * } * */ class Solution { static int sum ; public Solution ( ) { this . sum = 0 ; } public int sumRootToLeaf ( TreeNode root ) { pre ( root , 0 ) ; return sum ; } public void pre ( TreeNode

【算法系列】位运算专题

試著忘記壹切 提交于 2019-12-09 21:06:45
位运算专题 目录 位运算专题 LeetCode 231 2的幂 1、分析 2、代码 LeetCode 762 二进制表示中质数个数计算置位 1、分析 LeetCode 136 只出现一次的数 1、分析 2、 代码 LeetCode 476 数字的补数 1、分析 2、代码 LeetCode 137 只出现一次的数字II 1、分析 2、代码 LeetCode 260 只出现一次的数字III 1、分析 2、代码 LeetCode 371 两整数之和 1、分析 2、代码 LeetCode 201 数字范围按位与 1、分析 2、代码 LeetCode 421 数组中两个数的最大异或值 1、分析 2、代码 LeetCode 477 汉明距离总和 1、分析 2、代码 LeetCode 231 2的幂 题目: https://leetcode-cn.com/problems/power-of-two/submissions/ 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1: 输入: 1 输出: true 解释: 20 = 1 1、分析 如果我们用2进制来表示n,则如果是2的幂次方,那么它的最高位一定是1,且只有这一个1,在位运算中,有一个操作是n&-n表示n从低位数起的第一个1的位置k,最后值为2^k,例如n=6,二进制为110,则-n是n的反码加1,即001+1=010

记录BigInteger的两个构造方法

谁都会走 提交于 2019-12-09 18:26:09
记录BigInteger的两个构造方法 构造方法: BigInteger​(byte[] val) 先说一下此构造方法是怎么得到结果的: 打印结果可以得出结论: BigInteger 中 toString(进制)方法 构造方法: BigInteger​(int signum, byte[] magnitude) 先说一下此构造方法是怎么得到结果的: --------------------------------------------------------------------------------------------------------------------------------------- 如果着急,可直接拉到最后看结论。如果结论看不懂,可以从头慢慢看起,也查阅别人的相关文档 --------------- 以下全为个人理解,知识有限,理解可能有错,谨慎借鉴 ------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------- 构造方法: BigInteger​(byte

序列化和反序列化-刘丁

为君一笑 提交于 2019-12-09 13:08:08
#一、定义以及相关概念 互联网的产生带来了机器间通讯的需求,而互联通讯的双方需要采用约定的 协议 ,序列化和反序列化属于通讯 协议 的一部分。通讯 协议 往往采用分层模型,不同模型每层的功能定义以及颗粒度不同,例如:TCP/IP 协议 是一个四层 协议 ,而OSI模型却是七层 协议 模型。 在 OSI七层 协议 模型中 展现层 (Presentation Layer) 的主要功能是把 应用层 的 对象 转换成一段连续的 二进制串 ,或者反过来,把 二进制串 转换成 应用层 的 对象 --这两个功能就是序列化和反序列化。 一般而言, TCP/IP 协议 的 应用层 对应与 OSI七层 协议 模型的 应用层 ,展示层和会话层 ,所以序列化 协议 属于 TCP/IP 协议 应用层 的一部分。 本文对序列化 协议 的讲解主要基于 OSI七层 协议 模型 。 序列化: 将 数据结构 或 对象 转换成 二进制串 的过程 反序列化:将在序列化过程中所生成的 二进制串 转换成 数据结构 或者 对象 的过程 数据结构 、 对象 与 二进制串 不同的计算机语言中, 数据结构 , 对象 以及 二进制串 的表示方式并不相同。 数据结构 和 对象 :对于类似Java这种完全面向 对象 的语言,工程师所操作的一切都是 对象 (Object),来自于类的实例化。在Java语言中最接近 数据结构 的概念

进制转换

依然范特西╮ 提交于 2019-12-07 23:36:35
我们知道十进制转换成二进制用短除法,但是为什么用短除法呢?请往下看。 “数制”只是一套符号系统来表示指称“量”的多少。我们用“1”这个符号来表示一个这一“量”的概念。自然界的“量”是无穷的,我们不可能为每一个“量”都造一个符号,这样的系统没人记得住。所以必须用有限的符号按一定的规律进行排列组合来表示这无限的“量”。符号是有限的,这些符号按照某种规则进行排列组合的个数是无限的。十进制是10个符号的排列组合,二进制是2个符号的排列组合。 在进行进制转换时有一基本原则:转换后表达的“量”的多少不能发生改变。二进制中的111个苹果和十进制中的7个苹果是一样多的。 十进制中的数位排列是这样的…… 万 千 百 十 个 十分 百分 千分…… R进制中的数位排列是这样的……R^4 R^3R^2 R^1 R^0 R^-1 R^-2 R^-3…… 可以看出相邻的数位间相差进制的一次方。 以下部分来源:知乎网友 进制这事儿,说到底就是位值原理,即:同一个数字,放在不同的数位上,代表不同大小的“量”。例如:十进制中,百位上的1表示100,十位上的1表示10。 任何进制中,每个数都可以按 位权 展开成各个数位上的数字乘以对应数位的位权,再相加的形式,如:   十进制的123=1×100+2×10+3×1   十进制的9876=9×1000+8×100+7×10+6×1   问:为啥相应的数位是1000

理解Javascript执行过程

ⅰ亾dé卋堺 提交于 2019-12-06 11:16:33
Javascript是一种解释型的动态语言。 在程序中,有编译型语言和解释型语言。那么什么是编译型语言,什么是解释型语言呢? 编译型语言: 它首先将源代码编译成机器语言,再由机器运行机器码(二进制)。 解释型语言: 相对于编译型语言而存在的,源代码不是直接编译为目标代码,而是将源代码翻译成中间代码,再由解释器对中间代码进行解释运行的。 比如javascript/python等都是解释型语言(但是javascript是先编译完成后,再进行解释的)。 主要的编译型语言有c++, 解释型语言有Javascript, 和半解释半编译(比如java)。 一. 了解代码是如何运行的? 我们都知道,代码是由CPU执行的,但是CPU不能直接执行我们的if...else这样的代码,它只能执行二进制指令,但是二进制对应我们的可读性来说并不友好,比如二进制 11100000 这样的,我们并不知道它代表的是什么含义, 因此科学家们就发明了汇编语言。 汇编语言 什么是汇编语言? 它解决了什么问题? 汇编语言是二进制指令的文本形式,和二进制指令是一一对应的关系,比如加法指令 00000011 写成汇编语言就是ADD。那么汇编语言的作用就是将ADD这样的还原成二进制,那么二进制就可以直接被CPU执行。它最主要的作用就是解决二进制指令的可读性问题。 但是汇编语言也有缺点: 1. 编写的代码非常难懂,不好维护。 2

#leetCode刷题纪实 Day31

半城伤御伤魂 提交于 2019-12-06 11:04:39
https://leetcode-cn.com/problems/binary-number-with-alternating-bits/ 给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。 示例 1: 输入: 5 输出: True 解释: 5的二进制数是: 101 示例 2: 输入: 7 输出: False 解释: 7的二进制数是: 111 示例 3: 输入: 11 输出: False 解释: 11的二进制数是: 1011 示例 4: 输入: 10 输出: True 解释: 10的二进制数是: 1010 小菜鸡的尝试: 暴力方法不赘述,略微修改上一次的暴力办法代码就行,此处就不贴了 膜拜大佬代码: 1 class Solution { 2 public: 3 bool hasAlternatingBits(int n) { 4 n = (n ^ (n>>1)); 5 return (n & ((long)n+1)) == 0; 6 } 7 }; 将数右移一位(位运算),和原数做异或 1010101 1110101 1010101 1110101 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-number-with-alternating-bits

二进制vs十进制

一笑奈何 提交于 2019-12-06 07:06:43
题目描述 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数。 例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10110101,其十进制数为181,181即为173的二进制逆序数。 输入描述: 一个1000位(即10^999)以内的十进制数。 输出描述: 输入的十进制数的二进制逆序数。 示例1 输入 复制 173 输出 复制 181 代码: #include <cstdio> #include <iostream> #include <algorithm> using namespace std; string f(int m,int n,string a)///将m进制转化为n进制 { string b; int l=a.size(); for(int i=0;i<l;) { int k=0; for(int j=i;j<l;j++) { int t=(k*m+a[j]-'0')%n; a[j]=(k*m+a[j]-'0')/n+'0'; k=t; } b+=char(k+'0'); while(a[i]=='0')i++;///跳过高位产生的0 } return b; } int main() { string a,b,c; while(cin>>a) { b=f(10,2,a); c=f(2,10

MySQL数据库备份和恢复

空扰寡人 提交于 2019-12-06 05:15:42
目录 MySQL数据库备份和恢复 备份恢复概述 为什么要备份 备份注意要点 还原要点 备份类型: 备份时需要考虑的因素 备份什么 备份工具 冷备份 cp tar mysqldump备份工具 模拟数据库崩溃,最大限度还原数据 mysqldump的分库备份 mysqldump的MyISAM存储引擎相关的备份选项: mysqldump的InnoDB存储引擎相关的备份选项: 生产环境实战备份策略 将误删除了的某个表进行还原 MySQL数据库备份和恢复 备份恢复概述 为什么要备份 灾难恢复:硬件故障、软件故障、自然灾害、黑客攻击、误操作测试等数据丢失场景 备份注意要点 能容忍最多丢失多少数据 恢复数据需要在多长时间内完成 需要恢复哪些数据 还原要点 做还原测试,用于测试备份的可用性 还原演练 备份类型: * 完全备份,部分备份 完全备份:整个数据集 部分备份:只备份数据子集,如部分库或表 * 完全备份、增量备份、差异备份 增量备份:仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据,备份较快,还原复杂 差异备份:仅备份最近一次完全备份以来变化的数据,备份较慢,还原简单 * 注意:二进制日志文件不应该与数据文件放在同一磁盘 * 冷、温、热备份 冷备:读、写操作均不可进行 温备:读操作可执行;但写操作不可执行 热备:读、写操作均可执行 MyISAM:温备,不支持热备 InnoDB