原码

霍夫曼编码的应用——压缩数据

我怕爱的太早我们不能终老 提交于 2020-02-01 21:34:21
霍夫曼编码的应用——压缩文件 二进制的补码,反码,以及原码之间的关系 原码:正数的原码:按照二进制转换成二进制码就是原码。负数的原码:其对应的绝对值转换成二进制原码后,在高位补一。 int类型的1,在32位机器上,占有的四个字节,高位补零。得到:00000000 00000000 00000000 00000001 int类型的-1,在32位机器上,占有四个字节,取绝对值,高位补一。得到:10000000 00000000 00000000 00000001 反码:正数的反码就是原码,负数的反码是原码除符号位以外所有的位取反。 int类型的1,在32位机器上,其反码为原码,高位补零。得到:00000000 00000000 00000000 00000001 int类型的-1,在32位机器上,其反码为符号位不变,其余取反。得到:11111111 11111111 11111111 11111110 补码:正数的补码与原码相同,负数的补码为在反码的基础上在最低位再加1 int类型的1,补码,反码,与源码相同。补码为:00000000 00000000 00000000 00000001 int类型的-1,在反码的基础上,与最低位加一。补码为:11111111 11111111 11111111 11111111 总结: 正数,三个码相同,原码,反码,和补码相同。 负数:

day01-第一个python程序与数据存储(01-06)

冷暖自知 提交于 2020-01-26 19:53:04
来源于千锋2016还是2017的网课视频。 内存: 抽象:一个开关,有两种状态,开启和关闭,一种状态对应1, 另一种状态对应0,把八个开关放到一个房间里,这个房间称为 “一个”字节,一个开关代表一位,每个房间都有门牌号,该号码 可以看成是“地址”,把无数个房间堆叠起来,组成了摩天大厦。 可以把摩天大厦看成“内存” 单位 1bit 8bit == 1字节 1024bit == 1K 1024K == 1M 1024M == 1G 1024G == 1T 内存中以二进制形式存储数据 二进制:0 1 逢二进一 0 + 0 = 0 0 + 1 = 1 1 + 1 = 10 11 + 1 = 100 11 + ..1 ---------- 100 八进制:0 1 2 3 4 5 6 7 逢八进一 1 + 7 = 10 1 + 2 = 3 作用:开发中基本不用,因为八进制和十六进制可以很轻松的跟二进制转换 十进制:0 12 3 4 5 6 7 8 9 逢十进一 十六进制:0 12 3 4 5 6 7 8 9 a b c d e f 逢十六进一 1 + f = 10 作用:内存地址用十六进制数表示 十进制---》二进制 倒除法,余数逆序 10(10进制) 10/2--->1010(2进制) 二进制转十进制 当前的数字,乘以2的位数次方,最后相加 0*2^0+1*2^1+0*2^2+1*2^3 =

第二章 信息的表示和处理

旧街凉风 提交于 2020-01-25 01:19:05
1. 三种重要的数字表示 (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)整数溢出漏洞 参考资料: 整数溢出与程序安全 一个整数是一个固定的长度,它能存储的最大值是固定的,当尝试去存储一个大于这个固定的最大值时

进制的介绍,原码,补码,反码

旧街凉风 提交于 2020-01-24 16:14:28
计算机中的二进制: 一些固有的概念不介绍,直接更加形象例子的介绍: 比如: 十进制的1 转换为二进制就是 0 0 0 0 0 0 0 1 2的0次方=1 十进制的-1 转换为二进制就是 1 0 0 0 0 0 0 1 高位 :其中红色标记的是高位,1是负数,0为正数 以-2为例子:(因为正数的原码补码反码都是一样的,所以不再描述) -2的原码: 1 0 0 0 0 0 1 0 --2的反码: 1 1 1 1 1 1 0 1 -2的补码: 1 1 1 1 1 1 1 0 反码加上1,2进制遇二进一(计算机是通过补码进行运算的,所以补码非常的重要) 来源: https://www.cnblogs.com/qiaohechen/p/12232254.html

【计算机原理】求一个机器数的反码

你离开我真会死。 提交于 2020-01-22 05:24:03
首先,解释一下 反码 的概念:反码是数值存储的一种,简单点说就是在计算机内定点数的表示法之一,除了反码,常用的还有原码,补码,移码等。 暗戳戳地说一下,反码其实是用得很少的~ 但是!反码用处还是挺大的,比如说作为机器数运算的中间数, 虽然用补码更多一些吧 ,再比如说 系统环境设置 ,像linux平台的目录和文件的默认权限的设置umask就是的使用反码原理。 总之,存在即是合理,反码就是这么真实存在的一种编码方式。 其次,套用一下教科书上的东西: 正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。 老陌在此用自己的理解解释一下,就是说求一个数的反码主要分成两个方向:正数和负数。其中最简单的就是正数了,只要原模原样照搬就可以了;然后是夹在正数和负数中间的0,因为在计算机中0的 原码 和 反码 是分成+0和-0的,所以这个特例还真要分类讨论;最后是负数,整数的做法也就是按位取反,符号位不变,小数的话印象中是有定点小数和浮点小数之分,我记得以前计算浮点小数还要先把小数转换成整数,然后算完了再把小数点向前移动多少位,最后才能求出实际的数值。 综上,在老陌的印象中求反码的难易等级是这样的:正整数(易)--->正小数--->零--->负整数--->负小数(难) 接下来老陌将以8位的二进制机器数为例,其中首位为符号位(0为正,1为负),所以决定真值范围的也是后面的7位

第一个程序&C语言数字表示

僤鯓⒐⒋嵵緔 提交于 2020-01-18 23:32:48
第一个C语言程序 与hello world不同,这里是另外一个简单的C语言程序。接下来对这个程序结构进行简要介绍,使得了解C程序的基本架构。 #include <stdio.h> 这一行的意思是引入一个头文件,.h就是head的意思。一般地,在C语言或C++中,会把用来#include的文件的扩展名叫 .h,称其为头文件。 #include文件的目的就是把多个编译单元(也就是c或者cpp文件)公用的内容,单独放在一个文件里减少整体代码尺寸;或者提供跨工程公共代码。 stdio 就是指 “standard input & output"(标准输入输出) 所以,源代码中如用到标准输入输出函数时,就要包含这个头文件 也可以自己写一个.h或者.cpp文件,在其中存储一些自己写的函数,放在程序的同一文件夹下,这时也就可以include自己的文件调用自己写的函数了。 int main() printf() 本程序包含两个函数。函数就是C语言中的程序模块,当我们经常要执行一项任务时,就可以抽象出一个函数实现这个功能。函数在使用前必须声明,一般用函数原型的方法实现,这里不在赘述。 函数一般的形式: return_value_type function_name(parameter_list) 即 返回值 函数名(形参列表) int main()中,返回值就是int整型,而且main(

Java基础语法(1)

馋奶兔 提交于 2020-01-18 01:15:56
一:关键字 Java 已经赋予了特殊含义的单词 , 特点是都是 小写字母 .(Java 关键字是区分大小写的) 目前见到的关键字 : public : 公共的 , 公开的 . 权限修饰符 , 说明后面的类或者是方法谁都可以用 . class : 定义类的 . static : 静态的 , 说明这个方法可以属于类 , 可以使用类名直接调用 . void : 空 . 说明当前的方法没有返回值 . main : 不是关键字 . 约定俗成的程序的入口点 . 二 :源文件可以写多少个类定义的演示 编译的时候一个类编译成一个.class文件,多个类生成多个.class文件 /* 演示:文件名和类名不一定保持一致 类前边如果加public,那么类名和文件名必须保持一致. 否则,文件名和类名可以不一致. 此时,编译成功的结果,字节码文件的名称和类名一致. */ // public class Demo4{ //没有public修饰,表明权限是default(默认权限:包权限) //没有定义包的话,表明都在默认包中. class Demo4{   public static void main(String[] aa){     System.out.println("hello");   } } //想要被jvm虚拟机直接运行的类必须包含main方法,否则不用定义. class Demo5{  

第一章 计算机网络概论 ----1.1.2数据表示

回眸只為那壹抹淺笑 提交于 2020-01-17 06:56:01
一、数制转换 1. 其他进制转10进制 按权展开法,位数为0的可省略不计算(0乘任何数都为0),最低位为0 例: 2. 10进制转其他进制 短除法:十进制数/进制,直到商为小于1时为止,余数拼接,先得到的余数为低位有效位,后得到余数为高位有效位。 例:十进制52转换为二进制后为 110100 3.二进制转八进制和十六进制 转八进制:每三个2进制位对应一个8进制位 转十六进制:每四个2进制位对应一个16进制位 例:二进制1011010对应8进制的132,对应16进制的5A 二、原码、反码、补码、移码 深入理解请转 原码,反码,补码杂谈 1. 原码 最高位为符号位,0表示正数, 1表示负数 2. 反码 正数的反码和原码相同,负数:符号位不变,其余位取反(0变1,1变0) 3. 补码 正数的反码和原码相同,负数:反码+1 作用:补码出现是为了便于运算,可以不考虑符号位,用加法代替减法。 4. 移码 不论正负,将 补码 的符号位取反,其余不变 作用:一般会把浮点数的阶码用移码表示,便于比较大小 例: 1 -1 原码 0000 0001 1000 0001 反码 0000 0001 1111 1110 补码 0000 0001 1111 1111 移码 1000 0001 0111 1111 三、浮点数 只记录了一些考点,没有深入研究。 表示方法 : N = M ∗ R e N=M*R^{e

拼了整整一天,把这个问题搞明白了(看我上一篇文章的问题)

匆匆过客 提交于 2020-01-17 06:32:18
1.模的概念(我只讲个例子,具体的可以查数学中的 "同余模") 在日常生活中,有许多化减为加的例子。例如,时钟是逢12进位,12点也可看作0点。 当将时针从10点调整到5点时有以下两种方法: 1.将时针逆时针方向拨5格,相当于做减法: 10-5=5 2.将时针顺时针方向拨7格,相当于做加法:10+(12-5)=12+5=5 (模为 12) 2.模的运用(采用模得到 补码 ) 1. 补码 的得来:是为了让负数变成能够加的正数,so,负数的 补码 =模-负数的绝对值 比如:-1 补码 :1111 1111(10000 0000 -1得来) 当一个数要减1的时候,可以直接加 1111 1111 2.原码的得来:(负数的原码,直接把对应正数的最高位改为1) 原码能够直观的表示一个负数(能直观的把真值显示出来,如 -1为1000 0001 其中最高位表示符号位,不进行算术计算) 3.总结: 补码 相加,到第9位才舍弃(模10000 0000) 原码相加,到第8位舍弃(模1000 0000) 反码相加,到第8位舍弃(模1000 0000) 3.原码和 补码 之间转换: 1. 补码 =原码减1,再取反(便于理解) 或 补码 = 反码+1(便于描述和推理) 2.演示: 补码 =原码减1,再取反 如-1的原码1000 0001-->1000 0000(减1后)-->1111 1111(取反后) 补码

拼了整整一天,把这个问题搞明白了(看我上一篇文章的问题)

喜欢而已 提交于 2020-01-04 05:24:39
1.模的概念(我只讲个例子,具体的可以查数学中的 "同余模") 在日常生活中,有许多化减为加的例子。例如,时钟是逢12进位,12点也可看作0点。 当将时针从10点调整到5点时有以下两种方法: 1.将时针逆时针方向拨5格,相当于做减法: 10-5=5 2.将时针顺时针方向拨7格,相当于做加法:10+(12-5)=12+5=5 (模为 12) 2.模的运用(采用模得到 补码 ) 1. 补码 的得来:是为了让负数变成能够加的正数,so,负数的 补码 =模-负数的绝对值 比如:-1 补码 :1111 1111(10000 0000 -1得来) 当一个数要减1的时候,可以直接加 1111 1111 2.原码的得来:(负数的原码,直接把对应正数的最高位改为1) 原码能够直观的表示一个负数(能直观的把真值显示出来,如 -1为1000 0001 其中最高位表示符号位,不进行算术计算) 3.总结: 补码 相加,到第9位才舍弃(模10000 0000) 原码相加,到第8位舍弃(模1000 0000) 反码相加,到第8位舍弃(模1000 0000) 3.原码和 补码 之间转换: 1. 补码 =原码减1,再取反(便于理解) 或 补码 = 反码+1(便于描述和推理) 2.演示: 补码 =原码减1,再取反 如-1的原码1000 0001-->1000 0000(减1后)-->1111 1111(取反后) 补码