c语言求一个数的补码_反码补码原码怎么转换

c语言求一个数的补码_反码补码原码怎么转换原码、反码和补码1).数据在内存中存储的时候都是以二进制的形式存储的.intnum=10;原码、反码、补码都是二进制.只不过是二进制的不同的表现形式.数据是以补码的二进制存储的.2).1个int类型的变量.在内存中占据4个字节,32位.00000000000000000000000000000000在不考虑正负的情况下.1个int类型的变量可以表示接近43e种数据.为了可以表示正负…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原码、反码和补码

1).数据在内存中存储的时候都是以二进制的形式存储的.

int num = 10;

原码、反码、补码都是二进制.只不过是二进制的不同的表现形式.

数据是以补码的二进制存储的.

2). 1个int类型的变量.在内存中占据4个字节, 32位.

00000000 00000000 00000000 00000000

在不考虑正负的情况下.1个int类型的变量可以表示接近43e种数据.

为了可以表示正负性.使用最高为来表示这个数的正负性.

如果最高为是0 那么表示这个数是1个正数

如果最高为是1 那么表示这个数是1个负数.

所以,来表示数据的只有31位. 所以,1个int类型的变量.

最小值是: -2147483648  最大值是:2147483647

3). 原码

最高位表示符号位. 剩下的位数.是这个数的绝对值的二进制.

10的原码.

00000000 00000000 00000000 00001010

-8的原码.

10000000 00000000 00000000 00001000

绝对值: 正数的绝对值是自己,负数的绝对值去掉负号.

-20.

10000000 00000000 00000000 00010100

4). 反码

正数的反码就是其原码.

负数的反码就是在其原码的基础之上 符号位不变,其他位取反.

10的反码:

10的原码:00000000 00000000 00000000 00001010

10的反码:00000000 00000000 00000000 00001010

-8

-8的原码:10000000 00000000 00000000 00001000

-8的反码:11111111 11111111 11111111 11110111

5). 补码

正数的补码就是其原码.

负数的补码就是在其反码的基础之上+1

10.

10的原码:00000000 00000000 00000000 00001010

10的反码:00000000 00000000 00000000 00001010

10的补码:00000000 00000000 00000000 00001010

-8

-8的原码:10000000 00000000 00000000 00001000

-8的反码:11111111 11111111 11111111 11110111

-8的补码:11111111 11111111 11111111 11111000

6). 任何数据都是以其二进制的补码形式存储在内存中的.

int num = -8;

7). 为什么数据要以补码的形式存储呢?

计算机中只有加法没有减法.为了更加低成本的计算出结果,所以使用补码来存储数据.

3 + 2;

3 – 2; 这个减法运算对于计算机而言它的理解是 3 + (-2); 1

使用原码计算.

3的原码    00000000 00000000 00000000 00000011

-2的原码   10000000 00000000 00000000 00000010

—————————————————-

10000000 00000000 00000000 00000101 结果是1个负数明显是不对的

使用反码计算.

3 的反码:  00000000 00000000 00000000 00000011

-2的反码:  11111111 11111111 11111111 11111101

————————————————–

00000000 00000000 00000000 00000000        0

使用补码计算

3 的补码:   00000000 00000000 00000000 00000011

-2的补码:   11111111 11111111 11111111 11111110

————————————————-

00000000 00000000 00000000  00000001       1

注:使用补码来做运算效率是最高的.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/193562.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Tomcat部署WAR包访问不带项目名的方式

    Tomcat部署WAR包访问不带项目名的方式1、将项目打成WAR包放在Tomcat的webapps目录下2、在Tomcat的安装目录的conf下找到server.xml的文件,如:D:\apache-tomcat-9.0.8\conf\server.xml3、在Host标签里边添加<Hostname=”localhost”appBase=”webapps”unpackWARs=”true”…

  • 网站模板 收集[通俗易懂]

    网站模板 收集[通俗易懂]http://www.wzjs.info/bz.asp?classid=130http://www.wzjs.info/网站超市https://www.kuicms.com/魅网https://templets.kui.net/k0001/https://templets.kui.net/k0205/魅网内页(可直接扣)https://www.sitestar.cn/website/combination_templates.aspx?type=all建站之星(可扣)h…

  • opencv中的merge函数

    opencv中的merge函数该函数用来合并通道原型voidmerge(constMat*mv,size_tcount,OutputArraydst);第一个参数是图像矩阵数组,第二个参数是需要合并矩阵的个数,第三个参数是输出voidmerge(constvector&mv,OutputArraydst);第一个参数是图像矩阵向量容器,第二个参数是输出,这种方法无需说

  • 如何解决eclipse乱码问题?「建议收藏」

    如何解决eclipse乱码问题?「建议收藏」方法一:代码里面进行改变编码1.编码方式的gbk和utf不同,不可以互相转换,只有byte和utf或者byte和gbk之间的转换,之间的转码如下:2.我们还可以使用另一种转码方式来转码,具体如下:3.如果这两种方法,你都试验过,还没有转码成功的话,那就要看看你的控制台或者页面编码方式了:方法二:编码方式,控制台修改1.Window->Preferences…

  • Java算法大全_java贪心算法几个经典例子

    Java算法大全_java贪心算法几个经典例子Java经典问题算法大全/*【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21….*/packagecn.com.flywater.FiftyAlgorthm;publicclassFirstR

    2022年10月17日
  • Map与JSONObject对象相互转换记录「建议收藏」

    Map与JSONObject对象相互转换记录「建议收藏」业务背景:因为要嵌套一些数据报表,页面点击菜单直接进行url访问,因访问受限要修改url权限,返回数据是JSONObject,防止出现异常,后台进行了一些Map于JSONObject的转换,记录下来配置得json文件格式:{“redashLinks”:[{“name”:”在盈利表”,”url”:”http://i…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号