内容正文:
第1章 绪论
1.1 计算机前沿技术(大致了解)
1.2 计算机基础
1.4 程序设计语言概述
1.3 计算思维与算法
大学C/C++语言程序设计程序设计 第1章 绪论
变减法为加法
例如,在四位加法器(模=16)中实现 5-3的运算:
∵ [-3 ]补数=[13] 10
[ 5 ] = 0 1 0 1
[13] = 1 1 0 1 (+
1 0 0 1 0
丢失
大学C/C++语言程序设计程序设计 第1章 绪论
二进制补码定义为:
x (0≤x≤2n-1-1)
2n+x (-2n-1≤x<0)
[正数]原 ==[正数]反 ==[正数]补
[+28]原 ==[ +28 ]反 ==[ +28 ]补
0 0 0 1 1 1 0 0
补 码
[x]补=
[-28]原 :1 0 0 1 1 1 0 0
[-28]反 :1 1 1 0 0 0 1 1
[-28]补 :1 1 1 0 0 1 0 0
负数反码:将负数的原码除符号位之外的其它各位按位取反
负数补码:反码的最低位加1
大学C/C++语言程序设计程序设计 第1章 绪论
若n=8,则8位机器数补码的表示范围为:-128~127
补码的:10000001到11111111依次表示-127到-1,-127-1=-128,10000001-1=10000000,10000000就表示-128
例如,在四位加法器中实现 5-3的运算:
[+5]原 =[+5]反 =[+5]补= 0101
[-3]原= 1011 [-3]反= 1100[-3]补= 1101
5-3=[+5]补= 0101
+[-3]补=+ 1101
10010
模16,丢弃,保持4位
结果为2
大学C/C++语言程序设计程序设计 第1章 绪论
若n=8,则8位机器数补码的表示范围为:-128~127
补码的:10000001到11111111依次表示-127到-1,-127-1=-128,10000001-1=10000000,10000000就表示-128
如果在四位加法器中实现 3-5的运算?
[+3]原 =[+3]反 =[+3]补= 0011
[-5]原= 1101
[-5]反= 1010
[-5]补= 1011
3-5=[+3]补= 0011 +[-5]补= 1011
0011
+ 1011
1110
符号位1,负数的补码)
还原成原码:1010,结果为-2
大学C/C++语言程序设计程序设计 第1章 绪论
若n=8,则8位机器数补码的表示范围为:-128~127
补码的:10000001到11111111依次表示-127到-1,-127-1=-128,10000001-1=10000000,10000000就表示-128
[+0]反=00000000 [-0]反=11111111
补码表示的0只有唯一的形式:
[+0]补=[-0]补=00000000
对于0:
[+0]原=00000000 [-0]原=10000000
如果是8位、16位、32位加法器呢?
5-3;3-5?
大学C/C++语言程序设计程序设计 第1章 绪论
C语言在VC2010编译器中,一个整型数据被分配4B存储空间存储。
思考:+1与-1在此编译系统中的内存表示为?(补码)
[-1]原= 10000000 00000000 00000000 00000001
[-1]反= 11111111 11111111 11111111 11111110
[-1]补= 11111111 11111111 11111111 11111111
[1]原= [1]反= [1]补:
00000000 00000000 00000000 00000001
大学C/C++语言程序设计程序设计 第1章 绪论
信息处理中计算机中的4种编