2018-01-18 biezhi
熟悉编程的人都知道二进制总是一个让人晦涩难懂的词汇,只有大神级的程序员才有资格把玩它。 我们今天来重新认识一下二进制,了解编程中的数学知识和计算机为什么使用二进制? more 先聊聊十进制 我们平时使用的是10进制计数法。 继续阅读 »
2014-11-01 Xie Jingyi
在学习数论时我们都知道:只用2的幂次可以组合出所有的正整数。这便是二进制的魅力——状态简单而又变化万千。 引子 实际算法中,常常有一些线性的但数据量特别大的问题,如区间求和、求最小值等。很多时候,为了把时间复杂度从$O(n^2)$甚至更高的地方降下来,我们需要对数据进行一些预处理,以提高计算的速度。在这其中,有很大一部分是来自二进制运算特点的启发。 目录 树状数组 RMQ LCA&树上倍增 继续阅读 »
2014-11-02 Xie Jingyi
问题描述:已知数组a以及若干个查询(x, y),求a[x~y]之间的最小值。 分析 不难发现:若取t使得$2^t\leq y-x+1$且$2^{t+1}>y-x+1$,则有: $$[x, x+t]\bigcup[y-t+1,y]=[x,y]$$ 运用二进制的思想,我们只需预处理出$i~i+2^k-1$之间的最小值,即可快速完成查询。设dp[i][j]为$i~i+2^j-1$之间的最小值,则有: $$dp[i][j]=min(dp[i][j-1],dp[i+2^{j-1}][j-1])$$。 Code var a: array [1..100000] of longint; dp: array [1..1000 继续阅读 »
2018-04-04 findneo
note of https://www.ichunqiu.com/course/56927 Hacking三步曲 理解系统(Understanding) 系统性的基础课程学习,深入理解计算机系统运作机制。 破坏系统(Breaking) 学习与创造漏洞挖掘与利用技巧 重构系统(Reconstruction) 设计与构建系统防护 基础课程学习 核心基础课程——计算机的工作原理 体系结构 CPU的设计与实现 机器指令与汇编语言 指令的解码、执行 内存管理 CMU 18-447 Introduction to Computer Architecture https://www.ece.cmu.edu/~ece447/s15/dok 继续阅读 »
2014-08-31 Xiaosong Gao
我们把自己的程序发布到App Store,但是不能保证每一个用户都是从App Store下载官方APP,也不能保证每一个用户都不越狱。 换句话说,我们无法保证程序运行环境在苹果管控策略下就绝对的安全。 所以,在有些情况下,尤其是和钱有关系的APP,我们有必要在和服务器通信时,让服务器知道客户端到底是不是官方正版的APP。 继续阅读 »
2016-01-17 LEo
本文主要通过介绍如何计算十进制数转换成二进制数后,其二进制数中是1的个数,进而分析算法复杂度相关问题。例如十进制数7,二进制表示为0111,总共有三个1。 代码使用go语言实现,为简单起见,算法4和算法5只能计算0-255范围之内的数。 继续阅读 »
2014-10-08 Xie Jingyi
从今天起至10月11日,持续连载。 关于计算机 ENIAC 出现于1946年。 是最早的计算机。 是电子管计算机。 其他 阶码,即浮点数的指数部分。 IPv6是128位的。 求补码:二进制下:各位取反再加1 或 把原码减1再取反。 关于算法 各种排序的时间复杂度 快速排序:$O(nlogn)$,最坏为$O(n^2)$。 冒泡排序:$O(n^2)$。 归并排序:$O(nlogn)$。 计数排序:$O(n)$。 插入排序:$O(n^2)$。 关于树 完全二叉树 vs 满二叉树:完全二叉树最后一层不一定满。 前序遍历:中左右;中序遍历:左中右;后序遍历:左右中。 节点数 继续阅读 »
2014-02-23 veryyoung
android界面一般采用Xml编写,与图片资源结合 如果想"借鉴"别人的安卓界面,可以下载别人的apk 解压,然后图片资源可以找出来 xml文件也可以看到,不过都是二进制,需要反编译 可以使用如下办法进行反编译 下载AXMLPrinter2.jar 下载BatchAXPrinter.BIN.zip 下载之后解压,更改后缀为.jar 在控制台进入到解压后apk的目录,输入java -jar BatchAXPrinter.jar AXMLPrinter2.jar ../res/layout/ 其中 ../res/layout/是你要反编译的XML文件的根目录。即可完成批量反编译xml文件 再加上之前得到的图片资源,安卓界面"借鉴 继续阅读 »
2016-09-12 徐哲
1.Java与C++的异同 Java解释性语言:源代码-编译器(字节码)-JVM执行 C/C++编译型语言:编译链接成二进制代码 Java不存在全局变量,全局函数,没有指针,不支持多重继承,不支持运算符重载,没有预处理器,不提供goto语句(但保留关键字),不支持自动强制类型转换,必须显式强制类型转换。 Java为纯面向对象语言,所有代码包括函数,变量等都属于类 继续阅读 »
2016-02-17 summer
我们都知道,任何信息在计算机中都是以二进制01的形式存在,通过不同的01组合,可以表达出不同的信息,这就是编码了。我们通常所说的字节(byte),就是一个最基本的单元,它由8个0或者1来表示,可以组合出256种状态,如果每一种状态代表一个符号,那么一个字节可以编码出256个不同的符号,从00000000到11111111。 继续阅读 »