零. 概念和结论
1. 数:概念名,指代物体的多少,即物体的量的概念;
2. 值:概念属性,数的值,是数的大小的衡量;
3. 十进制:值的表示,是数值在形式上的表现。形式相对内涵(意义)而言,某种形式表示的符号需要人来解读才有意义。十进制是人类自然而然形成的数值表示形式:
a. 包括十个符号表示十个基本数值:阿拉伯数字:0, 1, 2, 3, 4, 5, 6, 7, 8, 9
b. 使用进位(满十进一)来表示所有自然数: 10,11,12,13,14,15,16,17,18,19,20,21,...;
4. 自然数:Natural number, 人类在进化过程中自然而然用来计数、排序的数字。用现代划分,即为非负整数。十进制也是人类在进化过程中自然而然采用的数值表示形式,十进制的符号可以完整表示自然数;
5. 非自然数:指人类根据自然数和后来的实际需要,引申出来的数值表示形式。非自然数无法仅仅使用十进制的十个基本符号表达。小数需要添加小数点,分数需要添加分数线,负数需要添加负号,无理数需要根号、循环负号、省略号,虚数需要i,等等。
6. 符号:引入负数时,引入符号的概念。分为正负号。在引入负数之前,自然数可以认为是无符号的数字。引入负数之后,自然数被认为是带有负号的数字,0以上的自然数带有正号,0以下的整数带有负号。
7. 编码:使用基本数值符号表示非自然数的形式、方法,也就是不使用正负号、小数点、分数线等;
8. 二进制:使用0,1这两个基本数值符号和“满二进一”的进位规则的数值表示形式;同样,在不考虑符号的情况下,二进制也只是自然数的表示形式。即,无符号二进制数表示的是自然数。
9. 二进制编码:(不考虑浮点数的情况下)使用0,1这两个基本数值符号表示自然数和负整数的编码方式。因为不使用正负号,则需要使用0和1分别表示正号和负号。
原码把符号编码和数值编码分开处理,包括四则运算时也是分开处理。
补码则把符号编码和数值编码统一处理,包括四则运算时也统一处理。
原码和补码因负整数而存在,不考虑符号,则不存在这两个概念,只有二进制数(0,1,满二进一)的概念。

一. 二进制
 
二进制是指以2为基数,满二进一,以0,1为基本数值符号的数值表示形式。二进制是计算机中使用的数值表示形式,参考十进制引入。
二进制首先是一个数值表示形式。数,首先是自然数。四则运算,首先是自然数的四则运算。
即:二进制数值表示形式,首先解决自然数的表示和四则运算。其次,才考虑如何解决小数、分数、无理数、虚数的表示方法和运算方法。
 
二. 无符号数就是自然数
 
无符号二进制数,即是没有引入符号的二进制数,所有的位都是数值的表示,不包含符号。这种形式表示的数值是自然数。
自然数的四则运算:加和乘可以自然进行,结果也可以自然表示,没有问题。减存在不够减的问题,除存在除不尽的问题。这个与进制无关,十进制也存在这样的问题。
在引入符号和负数以前,如小学低年级学习减法和除法,减法需要先比较大小,然后再减;除法的结果则有商和余数两个值。
 
三.有符号数的编码方式
 
不引入符号,则二进制数只有数值部分。引入符号和负数的概念,则需要表达正负号。计算机不如人类,可以直接用笔写正号和负号,或者印刷正号和负号。目前而言,计算机中所有的一切都是使用0和1进行表示,也包括正号和负号。
编码针对有符号数而言,即如何使用二进制数值符号0和1表示符号部分和数值部分。
原码:符号部分和数值部分分开处理
四则运算运算时,也把符号部分和数值部分分开处理。加负数相当于减;减负数相当于加;乘则把符号提取出来单独相乘,再把最终的符号赋给积,负负得正;除的符号亦是如此。
补码:符号部分和数值部分统一处理,即符号部分参与运算。
首先,反码不是独立的编码。其次,补码是可以把符号位带入运算,着实很神奇,这里略去不表。
 
四.计算机中需要几种加减乘除实现
 
这取决于有符号数编码能否实现符号带入运算。
如果有符号数使用原码表示,则每种运算需要两种实现:
把二进制数据全部当成数值部分的无符号数运算,即二进制自然数运算;
把二进制数据当成是符号部分和数值部分编码在一起的原码表示的有符号数运算;
 
如果有符号数使用补码表示,根据Java Integer类的说法,二的补码表示方法,可以实现加减乘统一运算,除不可以。所以加减乘只需要一种实现处理无符号数(不考虑符号的数)和有符号数的运算,而除法则需要分开处理,有两种实现。(再考)

IC-二进制, 自然数, 有符号数的更多相关文章

  1. verilog 有符号数(2转)

    在数字电路中,出于应用的需要,我们可以使用无符号数,即包括0及整数的集合:也可以使用有符号数,即包括0和正负数的集合.在更加复杂的系统中,也许这两种类型的数,我们都会用到. 有符号数通常以2的补码形式 ...

  2. C/C++ byte 转 int 有符号数,转成Int 无符号数

    p.p1 { margin: 0; font: 12px "Helvetica Neue"; color: rgba(69, 69, 69, 1); min-height: 14p ...

  3. 什么是无符号段整数,什么又是有符号数,(c++与java语言里边的不同)

    c++中:整型数分为有符号数和无符号数两种 unsigned int a;无符号整型变量a,意思是这个数最小值为0,最大值为2的32次方-1,因为一个整型数占四个字节,一个字节8位,共32位 int ...

  4. c语言中,如果将无符号数转换为有符号数

    在使用ti的adc芯片ads1259时,芯片是24为数据格式保存的,其中最高位是符号位,因此可以理解为是有符号数据,但是在嵌入式系统中,没有直接24位的变量,因此使用32的无符号先保存24位的数据. ...

  5. jchdl - GSL实例 - Sub(二的补码实现)

    https://mp.weixin.qq.com/s/10fgjqPt2pRvIJzjDGYgBg   概念辨析   <IC-二进制, 自然数, 有符号数>:https://mp.weix ...

  6. Protocol Buffer 序列化原理大揭秘 - 为什么Protocol Buffer性能这么好?

    前言 习惯用 Json.XML 数据存储格式的你们,相信大多都没听过Protocol Buffer Protocol Buffer 其实 是 Google出品的一种轻量 & 高效的结构化数据存 ...

  7. 深入理解计算机系统(2.7)---二进制浮点数,IEEE标准(重要)

    2.6我们进行了二进制整数运算的最后一役,本次LZ将和各位一起进入浮点数的世界,这里没有无符号,没有补码,但是有各种各样的惊奇.倘若你真正的进入了浮点数的世界,一定会发现它原来是这么有意思,而不是像之 ...

  8. 深入理解计算机系统(2.4)---C语言的有符号与无符号、二进制整数的扩展与截断

    开篇请各位猿友允许LZ啰嗦几句,最近一直在写计算机系统原理这系列文章,也已经下定决心要把这本书的内容写完.主要目的其实是为了巩固LZ的理解,另外也想把这些内容分享给猿友们,毕竟LZ觉得这些内容对程序猿 ...

  9. c的基础 1. 无符号数和补码

    计算机中储存和处理的信息是以二进制信号表示的.单个的位不是是很实用,而将这些位 组合在一起,加上某种解释,即给不同的可能位模式赋予含义,我们就行表示怎样有限集合的元素,即实现各种数据结构.计算机中使用 ...

随机推荐

  1. Spring Cloud学习 之 Spring Cloud Hystrix(流程分析)

    Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 我们还是从流程图入手: 创建HystrixCommand或者HystrixObserv ...

  2. Programmatically add an application to Windows Firewall

    Programmatically add an application to Windows Firewall 回答1   Not sure if this is the best way, but ...

  3. Day_14【IO流】扩展案例3_对文本文件中的字符串内容进行反转

    分析以下需求,并用代码实现 项目根路径下有text.txt文件,内容如下 我爱黑马 123456 利用IO流的知识读取text.txt文件的内容反转后写入text.txt文件中 654321 马黑爱我 ...

  4. nodejs开发准备工作(1)

    nvm工具(node版本管理工具) (1) 下载nvm: https://github.com/coreybutler/nvm-windows/releases: (2) 推荐下载压缩包,解压安装就好 ...

  5. 超简单笔记本改造nas--一个萌新的摸爬滚打

    最近好久没更新,你们有没有想我啊(手动滑稽)咳咳,言归正传,如同标题,最近闲来无事,打算利用家里的闲置笔记本电脑搭建一个nas.**注意:本文不涉及群晖以及相关专业NAS服务供应商!!!**nas分两 ...

  6. Selenium + Python + Chrome 自动化测试 环境搭建

    一.下载Python 相关的教程很多,此处不详细记录了,下面是官网下载地址: https://www.python.org/downloads/ 我使用的python版本为 Python 3.6.1 ...

  7. linux-rpm强制安装跳过依赖包

    [root@localhost ~]# rpm -ivh tigervnc-1.10.80-4.20200317git8b4be5fd.el7.x86_64.rpm --nodeps --force ...

  8. Windows基础学习

    0x01 常用的端口 HTTP协议代理服务器常用端口号:80/8080/3128/8081/9098SOCKS代理协议服务器常用端口号:1080FTP(文件传输)协议代理服务器常用端口号:21Teln ...

  9. 2020年腾讯实习生C++面试题&持续更新中(2)

    2020年腾讯实习生C++面试题&持续更新中(2) hello,大家好~ 我是好好学习天天,天天编程的天天,一个每天都死磕技术,及时分享的技术宅~ 昨天分享的题目不知道大家是否看过了,以后我计 ...

  10. 用matplotlib和pandas绘制股票MACD指标图,并验证化交易策略

    我的新书<基于股票大数据分析的Python入门实战>于近日上架,在这篇博文向大家介绍我的新书:<基于股票大数据分析的Python入门实战>里,介绍了这本书的内容.这里将摘录出部 ...