二进制代码

字符编码和文件处理

匿名 (未验证) 提交于 2019-12-02 23:45:01
计算机运行的三大核心硬件 任何一个程序要想运行必须先由硬盘加载到内存,然后去CPU取值执行。 运行着的应用程序产生的数据,必须先存到内存。 字符编码 字符编码针对的是文字 文本编辑器的输入和输出是两个过程,人在操作计算机的时候输入的是人能够看懂的字符,但是计算机只能识别010101这样的二进制数据,那么 输入的字符 >>>(字符编码表)>>> 二进制数字 字符编码表就是字符与数字的对应关系 a 0 b 1 a 00 b 01 c 11 d 10 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII ASCII最初只用了后七位,127个数字,已经完全能够代表键盘上所有的字符了(英文字符/键盘的所有其他字符) 后来为了将拉丁文也编码进了ASCII表,将最高位也占用了 阶段二:为了满足中文,中国人定制了GBK GBK:用2Bytes表示一个中文字符 还是用1Bytes表示一个英文字符 为了满足其他国家,各个国家纷纷定制了自己的编码 日本把日文编到 Shift_JIS 里,韩国把韩文编到 Euc-kr 里 阶段三:各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。 于是产生了unicode, 统一用2Bytes代表一个字符, 2**16-1=65535,可代表6万多个字符,因而兼容万国语言 但对于通篇都是英文的文本来说

【C】快速幂

匿名 (未验证) 提交于 2019-12-02 23:43:01
快速幂代码如下: int me(int a,int b)//传入a的b次方 { int ans=1; while(b!=0) { if(b&1==1) { ans*=a; } a*=a; b=b>>1; } return ans; } 以3的11次方为例。 则a=3,b=11 将11用二进制表示,11(2)=1011,可以将11拆解为2 0 +2 1+ 2 3 3的11次方可以表示为3^(2 0 +2 1+ 2 3 ) 3的三次方拆解为3^(2 0 )・3^(2 1 )・3^(2 3 ) 用位运算&1得出3末尾的二进制数,>>=1右移一位,逐个取得3的每一位二进制数进行计算。 a*a的意义:3 1 →3 2 →3 4 →3 8 →3 16 →3 32 →...

力扣(LeetCode)二进制求和 个人题解

匿名 (未验证) 提交于 2019-12-02 23:05:13
给定两个二进制字符串,返回他们的和(用二进制表示)。 1 0 。 输入: a = "11", b = "1" 输出: "100" 输入: a = "1010", b = "1011" 输出: "10101" 思路比较清晰,模拟汇编中二进制加法的做法,对缺位补0后,然后依次相加两数和CF进位标志位。 最后结束时,判断CF是否为1,为1代表最左边有进位,所以需要补1,如果没有则直接输出。 由于JAVA里INT类型到 CHAR类型或者STRING类型需要使用函数转换,要注意不要搞错了类型。 代码如下: class Solution { public String addBinary(String a, String b) { if (a.length() < b.length()) { String tmp = a; a = b; b = tmp; } String zeros = ""; for (int i = 0; i < a.length() - b.length(); i++) { zeros += "0"; } b = zeros + b; String ans = ""; int cf = 0; for (int i = a.length() - 1; i >= 0; i--) { int tmp = a.charAt(i) + b.charAt(i) - '0' - '0

Python文件操作

匿名 (未验证) 提交于 2019-12-02 22:56:40
本文主要记录Python中的文件的常用操作 1.文件操作的流程 1)打开文件,得到文件句柄并赋值给一个变量 2)通过句柄对文件进行操作 3)操作完成,关闭文件 2.打开文件的常用模式 有以下2个示例文件: # hello_gbk.txt文件为GBK编码,hello_utf8.txt文件为utf-8编码 Somehow, it seems the love I knew was always the most destructive kind 不知为何,我经历的爱情总是最具毁灭性的的那种 Yesterday when I was young 昨日当我年少轻狂 The taste of life was sweet 生命的滋味是甜的 As rain upon my tongue 就如舌尖上的雨露 I teased at life as if it were a foolish game 我戏弄生命 视其为愚蠢的游戏 View Code 2.1.一般模式 "r"ģʽ #"r"只读模式,是默认模式,默认编码是gbk,不可写 # print(f.read(10))      # 默认读全文,可以按照指定字符数量读文件内容 # print(f.readline(10))    # 默认读取一行,遇到\r或者\n为止,适合读小文件,也可以按照指定字符数量读文件内容 # print(f

PHP细节,PHP手册中常见的一句话:该函数是二进制安全的

匿名 (未验证) 提交于 2019-12-02 22:11:45
以下内容转自 http://wuxinjie.github.io/php-02/ 在看PHP手册的时候,经常看到一句话”该函数是二进制安全的”。 二进制安全是什么呢? 他是如何实现的? 二进制安全是什么? 先看一段代码: 1 <? php 2 $string1 = "Hello" ; 3 $string2 = "Hello\0Hello" ; 4 echo strcoll ( $string1 , $string2 ); /*返回0, 由于是非二进制安全,误判为相等 */ 5 echo strcmp ( $string1 , $string2 ); /*返回<0,不相等*/ 6 ?> 这是为什么呢?PHP是基于C实现的,PHP代码都会被zend引擎编译成opcode,最终作为C语言去执行。 而对于c语言‘\0’是字符串的结束符,它读到’\0’就会默认字符读取已经结束,从而抛掉后面的字符串。 1 //这里是C语言哦! 2 main (){ 3 char ab [] = "Hello" ; 4 char ac [] = "Hello\0Hello" ; 5 strcmp ( ab , ac ); /*返回0, 由于是非二进制安全,误判为相等 */ 6 } 有一个二进制安全的定义,我挺喜欢的: 程序不会对其中的数据做任何限制、过滤、或者假设 ―― 数据在写入时是什么样的,

java 中 image 和 byte[] 相互转换

匿名 (未验证) 提交于 2019-12-02 21:53:52
java 中 image 和 byte[] 相互转换 只需要一个存储了图片信息的二进制串(byte[]) 然后,这样: InputStream buffin = new ByteArrayInputStream(/*二进制串*/, /*起始位置*/,/*二进制串长度*/)); BufferedImage img = ImageIO.read(buffin); 这样,我们就得到了一个可以输出的BufferedImage了,是不是非常简单呢~ 接下来,我们再来写一段别致的代码,写法,也很简单 首先,我们要准备好一个可以输出的Image对象, 然后,这样 ByteArrayOutputStream bos = new ByteArrayOutputStream(); ImageIO.write((RenderedImage)/*要输出的图片*/,/* 图片的格式*/,bos); (要用try和chatch包起来滴) 然后用bos.toByteArray();(ByteArrayOutputStream.toByteArray)就可以得到想要byte[] 文章来源: java 中 image 和 byte[] 相互转换

移位和位运算相关算法题学习积累

匿名 (未验证) 提交于 2019-12-02 21:40:30
最近逛博客发现几个很有意思的算法题,大都是二进制相关的移位和位运算相关的,为此我暂且归为一类来整理学习,这也为后续遇到同等问题可以提供解法和思路。 当前文章基于JDK 1.8进心学习和测试。 一、判断一个整数是偶数还是奇数 题目很简单,就是判断一个整数是偶数还是奇数,整数可能是负数、零和正数。 解法一: 1 public static boolean isEven(int num) { 2 return num % 2 == 0 ? true : false; 3 } 注意,这种简单的算法其实是有个陷阱的,你只能按照上面这种方式来使用, 不能够用【num % 2 == 1】这种方式来判断奇数然后剩下的就是偶数的方式,因为在Java中,取模运算的规则是【A%B == A - (A / B) * B】 ,所以如果以取模判断奇数的话,那么 输入-1的话,-1%2的结果却不是1,上面的等式就不成立,所以就会把-1误判为偶数,这样就错误了 , 所以这里提醒一下,不能使用模2的结果是否等于1来判断奇偶 。 解法二: 因为奇数的二进制最后一位都是1,所以我们可以在此做文章,我们用1去与这个数,如果结果不是0,那就是奇数,否则为偶数,看下面代码: 1 public static boolean isEven(int num) { 2 return (num & 1) == 0 ? true :

Java 基本数据类型

[亡魂溺海] 提交于 2019-12-02 19:23:31
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。 因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。 Java 的两大数据类型: 内置数据类型 引用数据类型 内置数据类型 Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 byte: byte 数据类型是8位、有符号的,以二进制补码表示的整数; 最小值是 -128(-2^7); 最大值是 127(2^7-1); 默认值是 0; byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一; 例子:byte a = 100,byte b = -50。 short: short 数据类型是 16 位、有符号的以二进制补码表示的整数 最小值是 -32768(-2^15); 最大值是 32767(2^15 - 1); Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一; 默认值是 0; 例子:short s = 1000,short r = -20000。 int: int 数据类型是32位、有符号的以二进制补码表示的整数; 最小值是 -2,147,483

计算机基础2

余生长醉 提交于 2019-12-02 16:47:22
python是编程语言 语言 一种事物与另外一种事物沟通的介质 所以说编程语言是程序员与计算机沟通的介质 什么是编程: 就是程序员用计算机所能理解的表达方式(编程语言)把自己的思维逻辑写下来,编程的结果就是一堆文件 什么要编程? 或者说为什么要和计算机沟通,让计算机按照人的逻辑执行程序,取代并解放人力 完整的计算机系统 3层结构 应用程序 (不能直接操作硬件,如果要操作硬件,需要向操作系统层发出请求) 操作系统 (往上服务于应用软件,往下控制硬件) 计算机硬件 五大组成 控制器:统筹规划硬件与软件的运行,调控计算机各组成部分协调合作 运算器:可以完成数据的 算数运算 与 逻辑运算,得到想要的结果 存储器:需要再次使用的数据可以通过存储器进行 临时 或 永久存储 - 内存: 基于电工作,通电能存数据,断电数据消失 - 外存: 外部存储(硬盘),永久保存数据 输入input设备:将外界的信息,通过输入设备,提供给计算机 输出output设备:从计算机内部提前想要的数据 数据的处理流程 数据先通过输入设备到内存,然后CPU从内存里取出数据在进行处理,最后处理完的数据给到内存,内存给到输出设备显示 计算机三大核心 cpu: 中央 控制器 + 运算器 内存:临时存储数据,断电后消失 硬盘:永久存储数据,断电后还拥有 CPU 控制器+运算器=CPU 功能: 控制+运算 工作方式: 取值---

JavaScript中二进制与10进制互相转换

岁酱吖の 提交于 2019-12-02 11:10:44
webpack打包生成的代码中涉及了一些二进制位与的操作, 所以今天来学习一下JavaScript中的二进制与十进制转换操作吧 十进制转二进制: var num = 100 num.toString(2) // 如果省略了这个参数,默认是10进制 语法:NumberObject.toString(radix) radix可选 为2~36之间的数 二进制转十进制: var num = '1100100' //这里用number类型也可以,会被自动转换 parseInt(num,2) 语法:parseInt(string,radix) radix可选 为2~36之间的数 ·如果省略或radix为0 则数字以10为基础来解析 ·如果以'0x'或'0X'开头,则以16为基数 来源: https://www.cnblogs.com/eret9616/p/11742533.html