C语言基础(4)-原码,反码,补码及sizeof关键字

1. 原码

+7的原码是0000 0111

-7的原码是1000 0111

+0的原码是0000 0000

-0的原码是1000 0000

2. 反码

一个数如果值为正,那么反码和原码相同。

一个数如果为负,那么符号位为1,其他各位与原码相反

+7的反码0000 0111

-7的反码1111 1000

-0的反码1111 1111

3. 补码

原码和反码都不利于计算机的运算,如:原码表示的7和-7相加,还需要判断符号位。

正数:原码,反码补码都相同

负数:最高位为1,其余各位原码取反,最后对整个数 + 1

-7的补码:=

1000 0111(原码)

1111 1000(反码)

1111 1001(补码)

+0的补码为00000000

-0的补码也是00000000

根据负数的补码求原码:补码符号位不变,其他位求反,最后整个数 + 1,得到原码


用补码进行运算,减法可以通过加法实现


7-6=1

7的补码和-6的补码相加:00000111 + 11111010 = 100000001

进位舍弃后,剩下的00000001就是1的补码


-7+6 = -1

-7的补码和6的补码相加:11111001 + 00000110 = 11111111

11111111是-1的补码

4.sizeof关键字

sizeof不是函数,所以不需要包含任何头文件,计算一个数据类型的大小,单位:BYTE

其实C语言不规定具体数据类型的大小,所以数据类型实际的大小和系统是息息相关的,但是相同的系统下,同数据类型大小一定是一样的。

size_t类型在32位操作系统下是unsigned int,就是一个无符号的整数。当我们写程序要处理一个不可能出现负值的时候,一般用无符号数,这样可以增大数的表达最大值。

时间: 2024-10-07 07:44:24

C语言基础(4)-原码,反码,补码及sizeof关键字的相关文章

java基础:原码反码补码

计算机在操作的时候,都是采用数据对应二进制的补码来计算的: 原码 反码 补码 原码:用原码,反码,补码来分别表示+7,和-7. 首先得到7的二进制:111

计算机基础知识_原码反码补码

一.原码,反码,补码 1.原码 比如一个二进制数字 最高位是0,(0代表正数) 0010 1000 那么原码就是0010 1000 反码: 0010 1000 补码: 0010 1000 都是一样的,这个二进制数字的10进制是40 所以是正数 正数的原反补都是一样的 2.反码 反码就是原码的取反,二进制的 0变为1 1变为0 ,看最高符号位是0 还是1,如果是1,则你要0变为1,1变为0, 3.补码: 负数的的是原码 取反 在加1 变成补码(二进制数) 正数的原码 加上负数的补码就等于是做减法运

[C++基础]原码/反码/补码、二进制位运算

原码/反码/补码 编码 定义 实例 原码 最高位为符号位,"0"表示正,"1"表示负,其余位表示数值的大小. [+100]原=01100100 [+0]原=00000000 [-100]原=11100100 [-0]原=10000000注意:在原码中,零有两种表示形式. 反码 正数的反码与其原码相同:负数的反码是对其原码逐位取反,但符号位除外. [+100]反=01100100 [+0]反=00000000 [-100]反=10011011[-0]反=1111111

C语言原码反码补码与位运算.

目录: 一.机器数和真值     二.原码,反码和补码的基础概念     三.为什么要使用原码,反码和补码     四.原码,补码,反码再深入     五.数据溢出测试     六.位运算的运算说明     七.位运算的简单应用   一.机器数和真值 机器数(computer number)是数字在计算机中的二进制表示形式 机器数有2个特点:一是符号数字化,二是其数的大小受机器字长的限制 比如:十进制中的+6,计算机字长为8位,转换成二进制就是00000110,如果是-6,就是10000110

Java基础——原码, 反码, 补码 详解

上一篇提到了原码.反码和补码(见 http://www.linuxidc.com/Linux/2015-02/113862.htm),可是自己又捋了半天,有点懂了的样子,可是又不能清晰的表达.暂且记住以下两点吧: 正数的反码和补码都与原码一样: 负数的反码.补码与原码不同,负数的反码:原码中除去符号位,其他的数值位取反,0变1,1变0.负数的补码:其反码+1. 做个小Demo,分别写出7和-7的原码.反码.补码.(其中第一位是符号位,0表示正数,1表示负数) Demo 7 -7 原码 00000

c语言中的原码,补码,反码的小结。

1.正数(符号位为0)的原码=反码=补码. 2.负数(符号位为1)由原码到补码:原码符号位1不变(即先求绝对值的原码,将符号位变为1),其余取反,得到反码,再加1,得到补码. 重点:补码的表示方式有8位2进制,16位,32位,64位,这与c语言关键字表示的数值范围有关系. 3.对一个整数的补码再求补码,等于该整数自身. 4.模的概念:略. 例子:时钟的计量范围为0到11,模为12.表示n位计算机计量范围为0到2^(n)-1,模为2^(n).        在以模为12的系统中,加8和减4效果都是

02进制_原码反码补码

###02.03_Java语言基础(不同进制数据的表现形式)(掌握)* A:二进制的数据表现形式 * 由0,1组成.以0b(b可以大写也可以小写)开头(JDK1.7版本可以表示二进制了)* B:八进制的数据表现形式 * 由0,1,-7组成.以0开头* C:十进制的数据表现形式 * 由0,1,-9组成.整数默认是十进制的 * D:十六进制的数据表现形式 * 由0,1,-9,a,b,c,d,e,f(大小写均可).以0x开头 * E:案例演示 * 输出不同进制表现100的数据. * 0b100 * 0

原码, 反码, 补码 详解

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计

[转]原码, 反码, 补码 详解 很全

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计