二进制代码

LeetCode. 位1的个数

三世轮回 提交于 2019-12-01 10:28:59
题目要求: 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 示例: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。 代码: class Solution { public: int hammingWeight(uint32_t n) { int count = 0; for(int i = 0; i < 32; i++) { if(n & 1 == 1) { count += 1; } n = n >> 1; } return count; } }; 分析: 采用位运算,以及数的移位来做。 来源: https://www.cnblogs.com/leyang2019/p/11681785.html

设计配置选项等级系统

自古美人都是妖i 提交于 2019-12-01 10:08:53
- 什么是“配置选项等级”呢? 举个例子,PHP设置报错级别(来源PHP官网示例: https://www.php.net/manual/zh/function.error-reporting.php ): 1 <?php 2 3 // 关闭所有PHP错误报告 4 error_reporting(0); 5 6 // Report simple running errors 7 error_reporting(E_ERROR | E_WARNING | E_PARSE); 8 9 // 报告 E_NOTICE也挺好 (报告未初始化的变量 10 // 或者捕获变量名的错误拼写) 11 error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); 12 13 // 除了 E_NOTICE,报告其他所有错误 14 error_reporting(E_ALL ^ E_NOTICE); 15 16 // 报告所有 PHP 错误 (参见 changelog) 17 error_reporting(E_ALL); 18 19 // 报告所有 PHP 错误 20 error_reporting(-1); 21 22 // 和 error_reporting(E_ALL); 一样 23 ini_set('error_reporting', E

[LeetCode] 231. Power of Two

那年仲夏 提交于 2019-12-01 09:22:06
题意很简单,问一个数字n是否是2的几次幂。思路是用位运算做,如果你对位运算很敏感,你会发现,所有2的某次方的数字,转化成二进制之后,都只有一个1。比如 2->0010, 4->0100, 8->1000...... 所以思路是比较n & n-1是否等于0即可。因为如果n是2的某次方,比它小1的数字里面一定是一堆1。代码如下, 1 var isPowerOfTwo = function (n) { return n > 0 && (n & (n - 1)) === 0 ; }; 来源: https://www.cnblogs.com/aaronliu1991/p/11675164.html

第67题:二进制求和

耗尽温柔 提交于 2019-12-01 08:42:54
一. 问题描述 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" 二. 解题思路 本题采用补齐字符串+按位字符串相加+对字符串进行二进制化的方法进行。 步骤一:将a,b两个不等长的字符串进行补齐,方便其按位进行运算。 步骤二:创建字符串c比等长的字符串长度多1。 步骤三:将a,b两个等长字符串进行按位运算,结果从c的最后一位开始放。 步骤四:从最后一位开始对c进行判断,如果大于1,向前进一位并将该位置减2。 步骤五:判断c第一位的值,如果是1则直接输出c,如果是0,则删除第一位输出c。 三. 执行结果 执行用时 :4 ms, 在所有 java 提交中击败了77.89%的用户 内存消耗 :36.2 MB, 在所有 java 提交中击败了55.12%的用户 四. Java代码 class Solution { public String addBinary(String a, String b) { int a_1=a.length(); int b_1=b.length(); if(a_1>b_1) for(int i=0;i<a_1-b_1;i++) { b="0"+b;

CSP2019初赛知识点梳理

烈酒焚心 提交于 2019-12-01 08:40:39
知识点 小 汇总 Catalan数 公式1: \(f(n)=\sum_{i=0}^{n-1}f(i)\times f(n-1-i)\) ,其中 \(f(0)=1\) 如何去理解这个公式? 我们可以 感性地 把这个化为一个二叉树状态方案问题。 当n=1的时候显然方案数为1,即f(1)=1 当n=2的时候,有以下情况 左边sz 右边sz 总方案 1 0 \(f(1)\times f(0)=1\) 0 1 \(f(0)\times f(1)=1\) 所以f(2)=5 当n=3的时候,有以下情况 左边sz 右边sz 总方案 2 0 \(f(2)\times f(0)=5\) 1 1 \(f(1)\times f(1)=1\) 0 2 \(f(0)\times f(2)=5\) 所以f(3)=11 那么我们这样往下推,就得到了 左边sz 右边sz 总方案 n-1 0 \(f(n-1)\times f(0)\) n-2 1 \(f(n-2)\times f(1)\) n-3 2 \(f(n-3)\times f(2)\) …… …… …… 2 n-3 \(f(2)\times f(n-3)\) 1 n-2 \(f(1)\times f(n-2)\) 0 n-1 \(f(0)\times f(n-1)\) 故得到上述式子。 公式2: \(f(n)=\frac{1}{n+1}C^n_{2n}\)

Python基础 二进制和字符编码

你离开我真会死。 提交于 2019-12-01 08:16:14
二进制定义   二进制是计算技术中广泛采用的一种 数制 。 二进制数 据是用0和1两个 数码 来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师 莱布尼兹 发现。当前的 计算机系统 使用的基本上是 二进制系统 ,数据在 计算机 中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。 二进制与十进制转换   我们已经发现,二进制的第n位代表的十进制值都刚好遵循着2的n次方这个规律 字符编码   通过二进制的知识,大家已经知道计算机只认识二进制,生活中的数字要想让计算机理解就必须转换成二进制。十进制到二进制的转换只能解决计算机理解数字的问题,那么文字要怎么让计算机理解呢?   于是我们就选择了一种曲线救国的方式,既然数字可以转换成十进制,我们只要想办法把文字转换成数字,这样文字不就可以表示成二进制了么?   约定了一个表,把文字和数字对应上,这张表就相当于翻译,我们可以拿着一个数字来对比对应表找到相应的文字,反之亦然。 ASCII码   假如我们就已经有这么一张表了      ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于 拉丁字母 的一套电脑编码系统,主要用于显示现代 英语 和其他 西欧 语言

2019-2020-1 20175324 《信息安全系统设计基础》第3周学习总结

余生颓废 提交于 2019-12-01 07:24:39
##《信息安全系统设计基础》第3周学习总结 ###一、三种重要的数字表示 + 1.无符号数、有符号数、浮点数 正数的原码、反码以及补码是其本身。 负数的原码是其本身,反码是对原码除符号位之外的各位取反,补码则是反码加1。 + 2.为什么用补码表示 能够统一+0和-0的表示 采用原码表示,+0的二进制表示形式为0 000 0000,而-0的二进制表示形式为1 000 0000; 采用反码表示,+0的二进制表示形式为0 000 0000,而-0的二进制表示形式为1 111 1111; 采用补码表示,+0的二进制表示形式为0 000 0000,而-0的二进制表示形式为1 111 1111+1=1 0000 0000,因为计算机会进行截断,只取低8位,所以-0的补码表示形式为0000 0000。 补码的表示范围比原码和反码表示的范围都要大。用补码能够表示的范围为-128~127,0~127分别用00000000~01111111来表示,而-127~-1则用10000001~11111111来表示,多出的10000000则用来表示-128。 对于有符号整数的运算能够把符号位同数值位为一起处理 如果把符号位单独考虑的话,CPU指令还要特意对最高位进行判断,使计算机的最底层实现变得复杂。 + 3.整数溢出漏洞 参考资料:整数溢出与程序安全 一个整数是一个固定的长度,它能存储的最大值是固定的

第四章 文件和目录工具

一曲冷凌霜 提交于 2019-12-01 05:07:15
文件工具: 通过内建库函数和标准库来对文件进行操纵; 内建函数open是用来在计算机底层系统下访问文件的工具,它是python的固有部分,被调用返回一个新的与文件相连的对象 通过内建模块os 可以操作较底层的基于描述符的文件,复制,移除,移动和手机文件(os和shutil),借助字典的键将数据和对象存储于文件中(dbm和shelve) 以及访问sql数据库(sqllit第三方插件) python3.x中的文件对象模型 文本文件含有unicode文本(内容始终是一个str字符串----字符构成的序列) 二进制文件包含原有的8位字节码(内容始终是字节字符串----小整数构成的序列) 使用内建文件对象 输出文件: f=open('file','w') 以写方式打开文本文件 f.write('string\n') 写入文件 f.writelines(['str1\n','str2\n']) 写入行字符列表到文件 f.close() 关闭文件 open('file.txt','w').write('str\n') 创建临时文件对象并写入数据,马上被使用不需要保存对象的引用,数据传输完成后问击案对象马上就被回收并在进程中自动关闭 确保文件关闭:异常处理和上下文管理 万能的处理模式: myfile=open('file','w') try: ...process myfile...

计算机基础

巧了我就是萌 提交于 2019-12-01 04:50:49
来自mooc 北京理工大学--《大学计算机》、西安邮电大学《大学计算机基础》 chapter1 导论 1. 基于计算机 软件 的问题求解方法 有病毒-->查看杀毒软件;磁盘碎片太多了-->磁盘整理软件;启动太慢了-->系统配置实用程序msconfig。 生活中的问题:照片美化,制作一个求职报告,统计学生成绩,软件PS,word,excel。 更加专业的问题:制作鸟巢的三位模型--3dmax 或者maya;求解数学中的正弦拟合--matlab。 有限元计算的软件包 ANSYS。 其他常用软件: 2.基于计算机 程序 的问题求解方法 实例:人构成的中国印 这没有现成的软件可以解决,要用 程序 的方法进行。 3.基于 系统的工程 的问题求解方法 什么是系统?--计算机系统。 实例:天气预报,需要多台计算机完成。密集观测设置--即使数据采集--实时计算处理。 实例:因特网梅森素数大搜索,利用普通计算机的闲置时间来计算。需要多种系统平台支持(硬件、软件、网络、并行等) 基于计算机系统的工程的问题求解方法: (1)陈述问题 (2)问题的输入、输出和接口信息 (3)抽象的解答问题 (4)设计解决方案并且转化为程序 (5)用多种方案和数据测试该答案。 chapter2 计算机信息数字化基础 二进制: (1)0,1表示两种状态,容易实现,与生活实际相符(开、关;真、假) (2)运算规则简单,逢2进1

算法:快速幂

浪子不回头ぞ 提交于 2019-12-01 00:45:49
快速幂取模 用法:用于求解 a 的 b 次方,而b是一个非常大的数,用O(n)的复杂度会超时。 假如求 x ^ n 次方,我们可以把 n 表示为 2^k1 + 2k2 + 2^k3….,可以证明所有数都可以用前式来表示。(其实就是二进制表示数的原理) 即 x^n = x 2 k1 * x 2 k2 * x 2 k3…… 那么就可以利用二进制来加快计算速度了。 假如 x^23 , 23转化为二进制为 10111, 即 x^23 = (x^16) * ( x^4) * ( x^2) * (x^1);通过判断二进制x是否为1来判断是否加入运算中,(x>>1)每次向右移动一位,(x&1)判断是否为1,如果是1,则加入运算。如果不是,则x的幂次方继续乘方(1,2,4,8,16,32增长,作为待用乘法因子)。 # include <stdio.h> /* function: 求 x 的 y 次幂 param: x-->底数 y-->指数 return: x^y 的结果 */ int quickPower ( int x , int y ) { int result = 1 ; // 定义变量 while ( y > 0 ) // 当指数大于 0 时进行幂运算 { if ( y & 1 ) // y 和 1 做与运算,相当于对 2 求模 { result = result * x ; // 如果