无符号编码是基于传统的二进制表示法,表示大于或者等于零的数字。html
浮点数编码就是表示实数的科学计数法的以2为基数的版本。git
有符号数即二进制补码。编程
正数的原码、反码以及补码是其自己。安全
负数的原码是其自己,反码是对原码除符号位以外的各位取反,补码则是反码加1。网络
可以统一+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。
补码的表示范围比原码和反码表示的范围都要大。用补码可以表示的范围为-128127,0127分别用0000000001111111来表示,而-127-1则用10000001~11111111来表示,多出的10000000则用来表示-128。
每一个计算机都有一个字长,指明整数和指针数据的标称大小。由于虚拟地址是以这样的一个字来编码的,因此字长最重要的系统参数就是虚拟地址空间的最大大小。
对于一个字长为w位的机器而言,虚拟地址的范围为0~2w-1,程序最多访问2w字节。
当没有-m32或-m64参数时,通常状况下会生成跟操做系统位数一致的代码
gcc -m32 能够在64位机上(好比实验楼的环境)生成32位的代码
字节顺序是网络编程的基础,是指占内存多于一个字节类型的数据在内存中的存放顺序,一般有小端、大端两种字节顺序。
小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处。
大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处。
逻辑运算:
结果是1或0
全部逻辑运算均可以用与、或、非表达(最大式、最小式)而与或非能够用“与非”或“或非”表达,因此,只要一个与非门,就能够完成全部的逻辑运算。
数据类型中的转换转换一个固定的长度,存储的最大值是固定的,当尝试去存储一个大于这个固定的最大值时,将会致使一个溢出。
溢出将会致使"不能肯定的行为"。没有办法去用一个应用程序来判断先前计算的结果在其实是否也是正确的,因此可能致使某些类型的bugs,缓冲区溢出等。
问题1:如何检查补码加减法中的溢出问题
问题1解决方案:
一、 两个符号相同的补码数相加,若是和的符号与加数的符号相反,或两个符号相反的补码数相减,差的符号与减数的符号相同,都属于运算结果溢出.
二、两个补码数相加减时,若最高数值位向符号位送的进位值与符号位送向更高位的进位值不相同,也是运算结果溢出.
三、在采用双符号位(如定点小数的模4补码)运算时,若两个符号位的得值不一样(01或10)则是溢出.01代表两个正数相加,结果大于机器所能表示的最大正数,称为"上溢";10代表两个负数相加,结果小于机器所能表示的最小负数,称为"下溢"。
-无
- [# 2017-2018-1 20155338 《信息安全系统设计基础》第三周学习总结
无符号编码是基于传统的二进制表示法,表示大于或者等于零的数字。
浮点数编码就是表示实数的科学计数法的以2为基数的版本。
有符号数即二进制补码。
正数的原码、反码以及补码是其自己。
负数的原码是其自己,反码是对原码除符号位以外的各位取反,补码则是反码加1。
可以统一+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。
补码的表示范围比原码和反码表示的范围都要大。用补码可以表示的范围为-128127,0127分别用0000000001111111来表示,而-127-1则用10000001~11111111来表示,多出的10000000则用来表示-128。
每一个计算机都有一个字长,指明整数和指针数据的标称大小。由于虚拟地址是以这样的一个字来编码的,因此字长最重要的系统参数就是虚拟地址空间的最大大小。
对于一个字长为w位的机器而言,虚拟地址的范围为0~2w-1,程序最多访问2w字节。
当没有-m32或-m64参数时,通常状况下会生成跟操做系统位数一致的代码
gcc -m32 能够在64位机上(好比实验楼的环境)生成32位的代码
字节顺序是网络编程的基础,是指占内存多于一个字节类型的数据在内存中的存放顺序,一般有小端、大端两种字节顺序。
小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处。
大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处。
逻辑运算:
结果是1或0
全部逻辑运算均可以用与、或、非表达(最大式、最小式)而与或非能够用“与非”或“或非”表达,因此,只要一个与非门,就能够完成全部的逻辑运算。
数据类型中的转换转换一个固定的长度,存储的最大值是固定的,当尝试去存储一个大于这个固定的最大值时,将会致使一个溢出。
溢出将会致使"不能肯定的行为"。没有办法去用一个应用程序来判断先前计算的结果在其实是否也是正确的,因此可能致使某些类型的bugs,缓冲区溢出等。
问题1:如何检查补码加减法中的溢出问题
问题1解决方案:
一、 两个符号相同的补码数相加,若是和的符号与加数的符号相反,或两个符号相反的补码数相减,差的符号与减数的符号相同,都属于运算结果溢出.
二、两个补码数相加减时,若最高数值位向符号位送的进位值与符号位送向更高位的进位值不相同,也是运算结果溢出.
三、在采用双符号位(如定点小数的模4补码)运算时,若两个符号位的得值不一样(01或10)则是溢出.01代表两个正数相加,结果大于机器所能表示的最大正数,称为"上溢";10代表两个负数相加,结果小于机器所能表示的最小负数,称为"下溢"。
-无
结对学习内容
- 三种重要的数字表示 - 布尔代数
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 2000行 | 15篇 | 200小时 | |
第一周 | 150/150 | 1/1 | 17/17 | |
第二周 | 70/220 | 1/2 | 12/29 | |
第三周 | 100/320 | 1/3 | 10/39 |
计划学习时间:15小时
实际学习时间:10小时
]()
- 结对学习内容
- 三种重要的数字表示
- 布尔代数
- ...
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 2000行 | 15篇 | 200小时 | |
第一周 | 150/150 | 1/1 | 17/17 | |
第二周 | 70/220 | 1/2 | 12/29 | |
第三周 | 100/320 | 1/3 | 10/39 |
计划学习时间:15小时
实际学习时间:10小时