关于补码的学习

  1. 如果一个bity类型的数据,有8位,在计算机中是以补码的形式存储,正数最高位是0,负数最高位是1,

例如:

  • 十进制          5
  • 二进制原码    0000 0101
  • 二进制反码    0000 0101    正数的反码与原码相同
  • 二进制补码    0000 0101    正数的补码与原码相同
  • 十进制          -7
  • 二进制原码    1000 0111
  • 二进制反码    1111 1000   负数的反码是符号位,也就是最高位不变,然后其它位全部取反
  • 二进制补码    1111 1001   负数的补码是反码加1

注意以下几点

  • 用多少位(n位的话)表示计算机中的有符号数,则可以表示的范围是-2(n-1)~2(n-1)-1,上面8为可以表示的最小数是-256
  • 其二进制补码是1000 0000,这个在计算机中表示-256,这个似乎很奇怪,就是为什么用补码可以多表示一位的原因了,具体我不清楚
  • 0的补码是 0000 0000;
  • 负数求补码是 :原码求反码再加1;负数的补码求原码是:补码求其反,然后再加1,如此检验-256的补码,可以得到-256的原码是1 0000 0000
  • 问题来了,为什么多出一位,这就是模2n就是其模。

关于补码的学习

时间: 2024-10-10 18:32:46

关于补码的学习的相关文章

从计算机中数据类型的存储方式,思考理解原码,反码,补码

从计算机中数据类型的存储方式,思考理解原码,反码,补码 1. 数据类型 首先,我们知道,在C中,设计了两个类型的数据: 有符号数据类型 无符号数据类型 ==== signed & unsigned 打印方式: signed: %d, unsigned: %u 数据范围: signed: [-128, 127] unsigned: [0, 255] 2. 无符号数据类型 - 原码,反码,补码 在学习计算机的过程中,很快出现了:原码,反码,补码的概念.这里你肯定不会理解为什么要设计这个玩意儿的! 因

深入理解计算机系统笔记

我的博客上的比这个排版显示的更好一些,特别是图片 http://notelzg.github.io/2016/06/29/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F%E6%80%BB%E7%BB%93/ 1. hello wordl 我们还是从hello world程序说起吧: #include <stdio.h> int main() { printf("hell

原码,反码和补码学习报告

放假这几天,重新学习了原码反码和补码的相关知识.对原码反码和补码有了重新的认识.所以写了这篇博客,作以总结. 学习原码反码补码时主要是看了叶子秋前辈的博客(http://www.cnblogs.com/zhangziqiu/ ).对于原码反码补码的知识写的非常详细,也引用了很多例子.通过前辈的博客,了解到一个叫做机器数的东西,就是我们常用的二进制数,比如在8位二进制中,数字1的机器数就是00000001.通过真值,明白一长串二进制符并不完全代表数字.开头的01表示这个·数据的正负. 原码,就是符

如何用adc的芯片来强化学习——二进制的补码

部分参考了https://www.cnblogs.com/songdechiu/p/5397070.html 一.补码的优点 1.可以将减法转化为加法,在计算机中只保留加法 2.将符号位参与运算 二.如何实现? 我们先以钟表为例子,假设现在的标准时间为4点整,而有一个钟的时间为7点整.我们可以将时针逆时针旋转3格,或者将时针顺时针旋转9格,如图. 7-3=7+9=4 mod(12) 上述式子为一个同余式,同余式的标准定义为 a ≡b (mod n) 即同余式两边的数值,对n进行取余后的数值相等.

c语言学习笔记分享——原码、反码与补码

一.什么是原码.反码和补码我们知道,在计算机内部存储的带符号数都是以补码形式存储,用补码形式进行运算的.什么是一个数的补码?为什么要用补码?这要从数的原码.反码开始讲.我们以整型数为例,且假定字长为8位.1.原码整数X的原码是指:其符号位为0表示正,为1表示负;其数值部分就是X的绝对值的二进制数.X的原码通常用[X]原表示.如:[+100]原=01100100 [+0]原=00000000[-100]原=11100100 [-0]原=10000000注意:在原码中,零有两种表示形式.原码表示法简

位向量 补码与无符号 加法与乘法 CSAPP学习笔记

计算机中用位来表示整数,一种方式只能表示非负数,一种可以表示有符号数. 无符号数编码: 补码编码: 由上面的定义可以知道补码与无符号之间的对应关系(见下式),最高位为0时,补码与无符号表示是一样的,而最高位为1时,举个例子,补码表示的-1对应于无符号数的4294967295(这里指的是32位数) . 在整数运算之前必须先了解 整数的扩展和截断 扩展分为零扩展和符号扩展,零扩展是简单的在表示的开头添加0,适用于无符号数的扩展.而符号扩展在表示中添加最高有效位值的副本,适用于补码的扩展.比如4位的1

整数表示 补码与无符号 加法与乘法 CSAPP学习笔记

计算机中用位来表示整数,一种方式只能表示非负数,一种可以表示有符号数. 无符号数编码: 补码编码: 由上面的定义可以知道补码与无符号之间的对应关系(见下式),最高位为0时,补码与无符号表示是一样的,而最高位为1时,举个例子,补码表示的-1对应于无符号数的4294967295 . 在整数运算之前必须先了解 整数的扩展和截断 扩展分为零扩展和符号扩展,零扩展是简单的在表示的开头添加0,适用于无符号数的扩展.而符号扩展在表示中添加最高有效位值的副本,适用于补码的扩展.比如4位的1101扩展成8位,即1

Java学习--反码 原码 补码简析

关于课上实验中对小数的处理中出现的问题涉及到原码,反码,补码的问题,所以在网上进行了一下搜索.在原码,反码,补码中的解释可得知,无论是哪一种码,能够表示的数的范围是-2^(位数-1)-1至2^(位数-1)-1: 原码:二进制的在最高位数若为1, 则表示这个数为负数,最高位数为0,表示负数,其值大小就是最高位数除外的二进制转换成10进制的大小,最高位数表示符号: 反码:二进制的在最高位数若为1, 则表示这个数为负数,最高位数为0,表示负数,正数的值就是最高位数除外的二进制转换成10进制的大小,负数

20145216史婧瑶《信息安全系统设计基础》第3周学习总结

20145216史婧瑶<信息安全系统设计基础>第3周学习总结 教材学习内容总结 十六进制表示法C表示法以0x或0X开头的数字常量为十六进制进制转换常用进制:二进制(B),十进制(D),八进制(O或者Q),十六进制(H) 转换为二进制-十六进制相互转换,二进制的四位数字对应十六进制的一位数字. 同理,二进制与八进制的转化是三位对应一位. 但是通常情况下,进制转换都以二进制为桥梁进行转换. 对于一个字长为w位的机器来说,虚拟地址的范围是0~2^w-1.程序最多访问2的w次方个字节. 数据大小: 在